JSP

jsp

Redirect Servlet => .jsp

rd=request.getRequestDispatcher("..jsp");
rd.forward(req,res);

Expression: <%= 3*2 %> :

Call class:<%= com.abc.ClassA.funcA(); %>

Import: <%@ page import="com.ab;com.xy" %>

Scriptlets: <% for(int i=0; i<...) %>

Expression Language, no <%%>

xx = ${1+2};${param.email};

Define functions and variables

<%! int add2Numbers()...%>

<%! int x=50; %>
<%= "x is:"+x%>

Servlet

doGet, doPost

PrintWriter out = response.getWriter()
out.println(...)

String email = request.getParameter('email');

Include other .jsp file:

<jsp:include page="...jsp" />


Java Beans

public JavaClass, have no-args constructor
implements Serialize, have getter, setter

Use Bean in .jsp file:
First line:

<jsp:useBean id='person' class='example.PersonBean'/>
<%
out.print("person's name is: "+person.getName());
%>

getProperty

<jsp:useBean id='person'....>
Name = <jsp:getProperty property="name" name="person" /></jsp:useBean>

setProperty

<jsp:useBean id='person'....>
</jsp:useBean>
...
person.setName('Hoang');

Cookies

request.getCookies();
for ...loop
eachCookie.getName();

Connect MySQL in doPost

Class.forName("com.mysql.jdbc.Driver")
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbName")

CRUD
(Cread, Read, Update, Delete)

Query

ps = connection.prepareStatement("SELECT * FROM...");
rs = ps.executeQuery();
while(rs.next()) {
String name = rs.getString(2);
String email = rs.getString(3);
}

Insert, Update, Delete

ps = connection.prepareStatement("INSERT INTO...VALUES(?,?,?)");
ps.setString(1, "hoang");
ps.setString(2, "hoang@gmail.com");
status=ps.executeUpdate();

catch(SQLException | ClassNotFoundException e)

<form action="servletName">.., not contains .java

new Cookie("name", "Hoang");
response.addCookie(...);

Use Bean in "Servlet"

Send Bean from Servlet1 => Servlet 2

in Sevlet1:
request.setAttribute("personBean", personBean);

In Servlet2:
PersonBean personBean = (PersonBean)request.getAttribute("personBean");

PersonBean personBean = new PersonBean();
personBean.setEmail("hoang@gmail.com");

<a href="file.asp">

Servlets => business logic
JSP => presentation view

JSP Standard Tag Library-JSTL

Add JSTL's .jar to lib

function

sql: <%@ taglib prefix="sql" uri="..."%>

<sql:setDataSource url="..." var=".."/>


<sql:query ...>select * from ...</sql:query>

function: <%@ taglib prefix="fn" uri="..."%>

Core: <%@ taglib prefix="c" uri="..."%>

Fetch Website: <c:import url="http..."/>

Show string: <c:out value="aa"/>

<c:forEach items="${persons} var="p">....</c:forEach>

Navigate from Servlet1 to Servlet2:
<a href="<%${pageContext.request.contextPath}%>/Servlet2">

Redirect:
resp.sendRedirect("Servlet2");

Servlet releases 1997
JSP: 1999

Link:
http:../projectName/ServletName

Exception page:error.jsp:
<%@ page isErrorPage="true" %>
The exception is: <%= exception %>

EJB = Enterprise Java Beans

Stateless SessionBean

Stateful SessionBean

Result of each request is independent !
A Java class, must import:
import javax.ejb.*;

@Stateless
public class CalculationBean {
//getter, setter, sum, minus,...
}

Servlet is an "action", "controller"

public class AddServlet ...{
@EJB
CalculationBean calculationBean;
...doPost..{
request.getParameter("number1");
calculationBean.setNumber1(number1);
}
}

In View(.jsp file):
<form action="addServlet" method="POST">

Each request is dependent !
A Java class, must import:import javax.ejb.*;

@Stateful
public class ListBooks implements ListBooksRemote

In View(.jsp):
<%!private static ListBooksRemote listBooksRemote; %>

public void jspInit() { //Remember try...catch InitialContext initialContext = new InitialContext(); listBooksRemote = initialContext.lookup("java:global/bai01/ListBooks"); }

Show output in jsp:

if(listBooksRemote !=null) {
out.println("<h3>Show something</h3>")
}
%>

Name: Nguyen Duc Hoang
Youtube: https://www.youtube.com/c/nguyenduchoang