Tải bản đầy đủ (.doc) (86 trang)

JSP and servlet tutorials

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.89 MB, 86 trang )

Một số điều cần nhớ với java web
1.Cấu hình web.xml
 Configuring welcome file.
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
 Cấu hình jsp.
<servlet>
<servlet-name>HTML5</servlet-name>
<jsp-file>/HTML5_CSS3.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>HTML5</servlet-name>
<url-pattern>/HTML5</url-pattern>
</servlet-mapping>
 Cấu hình servlet.
• Servlet mapping
<servlet>
<servlet-name>CheckLogin</servlet-name>
<servlet-class>Controller.CheckLogin</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CheckLogin</servlet-name>
<url-pattern>/LoginError</url-pattern>
</servlet-mapping>
• Khởi tạo servlet này lúc triển khai hay trong thời gian khởi động
server ,thay vì phải chờ đợi cho yêu câu đầu tiên.
<servlet>
<servlet-name>KathyOne</servlet-name>
<servlet-class>foo.DeployTestOne</servlet-class>


<load-on-startup>1</load-on-startup>
</servlet>
 Configuring Error page.
• Khai báo một bắt lỗi cho tất cả ứng dụng của bạn,không chỉ jsp.
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/errorPage.jsp</location>
</error-page>
• Khai báo cụ thể hơn:Trang arithmaticException.jsp sẽ được gọi nếu
lỗi của ứng dụng là ArithmaticException .Nếu lỗi khác với lỗi
ArithmaticException thì nó sẽ gọi đến trang lỗi của toàn ứng dụng.
<error-page>
<exception-type>java.lang.ArithmeticException</exception-type>
<location>/arithmaticException.jsp</location>
</error-page>
• Đây là trang lỗi sẽ được gọi đến khi status của reponse là 404(file not
found)
<error-page>
<exception-type>404</exception-type>
<location>/notFoundError.jsp</location>
</error-page>
 Session
<session-config>
<session-timeout>30</session-timeout>
</session-config>
Hàm trên sẽ set timeout cho session của toàn hệ thống.Session sẽ mất hiệu lực
sau 30 phút kể từ khi session được hình thành.
 Cấu hình property cho tất cả các trang jsp
<jsp-config>
<jsp-property-group>

<url-pattern>*.jsp</url-pattern><! tất cả các file jsp >
//tập các thuộc tính
Ví dụ: <el-ignored>false</el-ignored> <!—cho phép sử dụng EL >
</jsp-property-group>
</jsp-config>
 Parameter
• Application initialization parameters.
• Khai báo biến khởi tạo ban đầu cho toàn bộ application.(Khi project
đó được load lên server thì biến đó đã được khởi tạo).
<context-param>
<param-name>Account</param-name>
<param-value>ducky</param-value>
</context-param>
<context-param>
<param-name>Password</param-name>
<param-value>2013</param-value>
</context-param>
• Lấy giá trị biến từ servlet ta làm như sau:
ServletContext context=this.getServletContext();
String account=context.getInitParameter("Account");
String password=context.getInitParameter("Password");
• Servlet initialization parameters.
• Khai báo biến khởi tạo ban đầu trong servlet file có tên LoginProcess.
(Khi file servlet đó được load lên server thì biến đó đã được khởi tạo).
<servlet>
<servlet-name>LoginProcess</servlet-name>
<servlet-class>Controller.LoginProcess</servlet-class>
<init-param>
<param-name>song</param-name>
<param-value>I am yours</param-value>

</init-param>
</servlet>
<servlet-mapping>
<servlet-name>LoginProcess</servlet-name>
<url-pattern>/LoginProcess</url-pattern>
</servlet-mapping>
• Cách lấy biến đó từ servlet đó là:
ServletConfig config=this.getServletConfig();
String song=config.getInitParameter("song");
• Cách lấy biến từ trang jsp thông qua biến config thuộc kiểu
ServletConfig:
name :<%=config.getInitParameter("name")%>
Kq:Giá trị của biến song (kiểu String) là : I am yours.
• Jsp initialization parameters.
Ta cũng có thể config một parameter vào file JSP.Cách cấu hình như của
servlet.
Note :Trong một web application chỉ có một đối tượng ServletContext ,còn
ServletConfig là của riêng từng thằng servlet khác nhau.
2.Servlet
2.1.Một số hàm quan trọng.
 getParameter
String[] names=request.getParameterValues("name");
String name=request.getParameter("name");
Ngoài ra còn có : getParameterMap, getParameterNames
 forward(): used to forward request from one servlet to another servlet.
request.setAttribute("title","home page");
ServletContext servletContext=getServletContext();
RequestDispatcher dispatcher=servletContext.getRequestDispatcher("home");
dispatcher.forward(request, response);
hoặc

request.setAttibute(“imageName”,”funny”);
RequestDispatcher dispatcher=request.getRequestDispatcher("home");
dispatcher.forward(request, response);
 sendRedirect :Link tới một trang khác và không có giữ liệu gửi đến trang
đó.(Giống như thẻ a).
response.sendRedirect("login.jsp");
 include(): used to include the contents of another servlet, JSP page or a
HTML file to a servlet.
RequestDispatcher dispatcher=getServletContext().getRequestDispatcher(path);
if(dispatcher==null){
out.print(path+"not found");
}else{
dispatcher.include(request, response);
}
2.2.Session.
 setSession .
HttpSession session=request.getSession();
session.setAttribute("userName", “quangthao”);
 getSession.
HttpSession session=request.getSession();
String userName=(String)session.getAttribute(“userName”);
Note:Nếu session chưa có giá trị thì nó sẽ trả về giá trị null.
 Một số hàm liên quan đến session.
• session.invalidate() :làm mất hiệu lực của session
• session.setMaxInactiveInterval(600) :set thời gian hiệu lực tối đa cho
session tính bằng second.
• session.isNew() :Kiểm tra là session đó được tạo ra lần đầu tiên hay
đã được tạo ra nhiều lần.
Một số điều chú ý :
Với câu lệnh : HttpSession session=request.getSession(boolean);

Giá trị truyền vào là kiểu boolean (true or false).Nếu giá trị truyền vào
là false thì sẽ có 2 lựa chọn :
 Nếu sesson đó đã tồn tại thì nó sẽ return session đó.
 Nếu session chưa tồn tại thì nó trả về bằng null.
Giá trị truyền vào là true (tức là giá trị mặc định hay không có giá trị
boolean truyền vào):
 Nếu sesson đó đã tồn tại thì nó sẽ return session đó.
 Nếu bạn là 1 client mới thì nó sẽ tạo ra một session mới và trả
về cho bạn .
2.3.Cookie
• addCookie
response.addCookie(new Cookie("location","VietName"));
• getCookies
for(Cookie cookie:request.getCookies()){
System.out.println(cookie.getName());
System.out.println(cookie.getValue());
}
2.4.Attribute
Ta có thể setAttrabute bằng một chuỗi hoặc một object.
Ví dụ set một chuỗi :
request.setAttibute(“user”,”Thao”);
Ví dụ set một object:
User user=new User();
Request.setAtribute(“user”,user);
Class User có thể bao gồm tên,địa chỉ,password,ngày sinh,
Như vậy ta có thể lấy được nhiều thông tin hơn từ 1 object.
3.Jsp.
3.1.Một số hàm quan trọng.
3.1.1.pageContext
Ví dụ:

<% pageContext.setAttribute("scope", "Page context"); %>
getAttribute is:<%=pageContext.getAttribute("scope")%>
findAttribute is:<%=pageContext.findAttribute("scope")%>
KQ:
getAttribute is:Page context
findAttribute is:Page context
• getAttribute: Chỉ tìm trong nội bộ trang.
• findAttribute :Hàm này sẽ tìm từ phạm vi nhỏ nhất rồi mở rộng dần,từ trong
trang ,request, session, và cuối cùng là toàn bộ aplication.
Ví dụ :
Session scope is: <
%=pageContext.getAttribute("otherScope",PageContext.SESSION_SCOPE)%>
Kq:trả về value atribute có tên otherScope, PageContext.SESSION_SCOPE là
phạm vị tìm kiếm.
Các phạm vi :
PageContext.APPLICATION_SCOPE
PageContext.SESSION_SCOPE
PageContext.REQUEST_SCOPE
PageContext.PAGE_SCOPE
3.1.2. Directive
Gồm có 3 Directive:
• <%@include %>
Ví dụ : %@include file="HTML5_CSS3.jsp"%
Trong một ứng dụng ,các trang đều có giao diện chung,ví dụ:menu
chung,section,var,header,footer thì ta có thể sử dụng directive này.
Note:Thường thì trang được tạo footer,section mẫu thì ta chỉ nên để nội dung
trong thẻ body,như vậy sẽ tránh được sự trùng lặp trong thẻ <head>
<%@include file="/common/header.jsp" %>
Hoặc :
<jsp:include page="/common/header.jsp"/>

Ta có thể đặt trên đầu trang hoăc trong thẻ body,điều khác nhau của hai cái này là
<%@include file="/common/header.jsp" %> sẽ được biên dịch trước khi chạy
server ,khi đó server khởi động châm nhưng nó sẽ nhanh hơn trong quá trình sử
dụng,còn <jsp:include page="/common/header.jsp"/> sẽ được load lại sau mỗi lần
load trang,bởi vậy cái này lâu hơn.
Trong header mẫu ,một trang jsp thừa kế header đó muốn truyền biến thì ta làm
như sau:
Header mẫu:
User :${para.userName}
<img src=”header.jpg”/>
Trang jsp hiện tại:
<jsp:include page="header.jsp">
<jsp:param value="Tom" name="userName"/>
</jsp:include>
Hoặc ta có thể đẩy thẳng biến vào:
<jsp:include page="header.jsp">
<jsp:param value="<%=name %>" name="userName"/>
</jsp:include>
Hoặc có thể truyền nhiều biến:
<jsp:include page="header.jsp">
<jsp:param value="Tom" name="userName"/>
<jsp:param value="ADMIN" name="isAdmin"/>
</jsp:include>
• <%@page %>
 errorPage(Trang 492->495)
• <%@taglib %>
Ví dụ:
<%@taglib uri=" prefix="c" %>
<%@taglib uri=" prefix="x"%>
<%@taglib uri=" prefix="f"%>

<%@taglib uri=" prefix="s"%>
Note:Phải thêm thư viện 2 thư viện jstl.jar và standard.jar vào thư mục WEB-
INF/lib
3.1.3.Exception language .
Exception language được khai báo bằng cặp thẻ ${} ,nó giúp code tường minh
hơn.
Ví dụ :
<%=pageContext.getAttribute("scope1")%>
Thay thế :Exception language :${pageScope.scope1}
hoặc :${pageScope.[“scope1”]}
Ta cũng có thêm các requestScrope,sessionScope,applicationScope
Exception có thể thực hiện các phép toán .
Ví dụ : 4+5=${5+4}
Kq:4+5=9
Giả sử giá trị trả về của getAttribute là một class .Ví dụ class Student có thuộc tính
nam,ta sẽ lấy thuộc tính nam đó như sau:
${requestScope.student.name}
Ví dụ:Lấy biến trong web.xml
<context-param>
<param-name>Password</param-name>
<param-value>2013</param-value>
</context-param>
Cách lấy:
${initParam.Password}
Kq:2013
Lấy giá trị gửi từ trang jsp gửi đến thông qua name.
(Giống phương thức getParametter của servlet)
Ví dụ: <form action="Jsp Servlet 27- Jsp pageContext.jsp" method="get">
<input type="text" name="abc"/><input type="submit" value="Submit"/>
</form>

Bên trang Jsp Servlet 27- Jsp pageContext.jsp sẽ lấy giá trị của input có tên abc
như sau:
${param.abc}
Nếu ta muốn lấy giá trị từ một đối tượng không phải là String mà là một đối tượng
kiểu List<> thì sẽ làm như thế nào?
Ví dụ:Servlet:
List<String> languages=new ArrayList<String>();
languages.add("Java");
languages.add("Php");
request.setAttribute("languages", languages);
Bên phía jsp:
${requestScope.languages[0]}
Kq: Java
3.1.4.useBean
Để lấy một object của một class ta có thể sử dụng useBean
Ví dụ class Student nằm trong package có tên ducky.models với thuộc tính là
name.
Servlet:
Student student=new Student();
student.setName=”Thao”;
request.setAttribute(“student”,student);
Jsp:
<jsp:useBean id="student" class="ducky.models.Student" scope="request" />
Get property name:<jsp:getProperty property="name" name="student"/>
• id chính là tên attribute .
• scope mặc định của nó là page
• trường name được mapping với trường id
• property thì phải map với đúng tên thuộc tính của class
kq: Get property name:Thao
Nếu muốn setProperty ta làm như sau:

<jsp:useBean id="student" class="ducky.models.Student" scope="request" />
<jsp:setProperty property="name" name="student" value="Dona"/>
Get property name:<jsp:getProperty property="name" name="student"/>
Kq: Get proerty name:Dona
Note :chú ý trong class Student phải có các phương thức mặc định setter và getter
của Java thì việc get và set property mới chạy được.
Bây giờ ta xét trường hợp như sau:
Servlet:
Student student=new Student();
student.setName=”Thao”;
request.setAttribute(“student”,student);
Jsp:
<jsp:useBean id="student" class="ducky.models.Student" scope="request" >
<jsp:setProperty property="name" name="student" value="Dona"/>
</jsp:useBean>
<jsp:getProperty property="name" name="student"/>
Nếu ta không có attribute có tên student thì nó vẫn tạo ra một useBean nhưng là
useBean rỗng.Thẻ jsp:setProperty hiện tại đang nằm trong cặp thẻ jsp:useBean,nó
chỉ thực hiện khi useBean là rỗng.
Nếu useBean rỗng thì giá trị in ra là:Dona
Ngược lại,attribute có tên student tồn tại thì kết quả trả về là :Thao
Nếu ra muốn lấy value thông qua name của 1 trang jsp gửi đến trang jsp hiện tại,ta
làm như sau:
Trang jsp submit:
<form action="Jsp Servlet 27- Jsp pageContext.jsp" method="get">
<input type="text" name="userName" value=”Minh”/>
<input type="submit" value="Submit"/>
</form>
Trang Jsp Servlet 27- Jsp pageContext.jsp là :
<jsp:useBean id="student" class="ducky.models.Student" scope="page" >

<jsp:setProperty property="name" name="student" param="userName"/>
</jsp:useBean>
Get property name:<jsp:getProperty property="name" name="student"/>
Lúc này attribute có tên student không tồn tại,nó vẫn tạo ra một useBean rỗng,sau
đó thực hiện hàm setProperty ,hàm setProperty lấy value thông qua tên userName
để gán vào thuộc tính name.
Kq:Get property name:Minh
Nếu bỏ thuộc tính param đi thì hàm setProperty nó sẽ map tới trường nào có thuộc
tính cùng tên với thuộc tính mà nó đang set rồi lấy giá trị value set cho thuộc tính
đó.
Ta xét về thuộc tính type của useBean:
Ví dụ:
<jsp:useBean id="student" type="ducky.models.Person"
class="ducky.models.Student" scope="page" >
<jsp:setProperty property="name" name="student" param="userName"/>
</jsp:useBean>
Get property name:<jsp:getProperty property="name" name="student"/>
Trong thuộc tính type đó là đường dẫn đến một interface mà class Student
implements .Hay nói cách khác,đó là supper class cha của class Student.
3.1.4.<c:out>
3.1.4.<c:forEach>
3.1.5.<c:if>
3.1.6.<c:choose ><c:when></c:when><c:otherwise></c:otherwise></c:choose>
3.1.7.<c:set>

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×