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