Sơ lược về
lập trình web với
Servlet và Jsp
Nguyễn Hoàng Hùng 5/2010
Nội dung
Giới thiệu chung
Giới thiệu về Servlet
Giới thiệu về Jsp
Mô hình MVC 1
Mô hình MVC 2
Tổng kết.
Giới thiệu chung
Có nhiều phương pháp để xây dựng một ứng dụng web động như:
sử dụng công nghệ Php, Asp.Net, Java(servlet/jsp),…
Để xây dựng web bằng công nghệ Java thì phải có hiểu biết về Jsp,
Servlet và mô hình MVC.
Bài viết này giới thiệu tổng quát về Jsp, Servlet, và mô hình MVC.
Giới thiệu về Servlet
Servlet là gì ?
Servlet là một lớp Java ở phía server được
thiết kế để xử lý những yêu cầu HTTP từ phía
client và sinh ra nội dung động trả về cho client.
Ví dụ về Servlet
Ví dụ: HelloWorld.java
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws
ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("<html>\n" +
"<head><title>Hello World</title></head>\n" +
"<body>\n" +
"<h1>Hello World</h1>\n" +
"</body>
</html>");
}}
Giới thiệu về Jsp
Jsp là gì ?
Jsp là kịch bản phía server, là sự mở rộng của
servlet để đơn giản hóa việc thiết kế giao diện,
trang jsp có thể chứa html, xlm và các thẻ jsp
riêng biệt.
Quá trình yêu cầu một trang jsp
Trình
duyệt
web
Trang Jsp
(*.jsp)
Servlet
được dịch từ trang Jsp
(*.java)
Servlet
đã được biên dịch
(*.class)
1
4
3
2
Web server
1. Client yêu cầu một trang Jsp
2. Bộ máy Jsp dịch trang Jsp thành một servlet
3. Servlet được biên dịch và được nạp vào bộ nhớ
4. Servlet phục vụ yêu cầu và gửi đáp ứng về client
Ví dụ: HelloWorld.jsp
<html>
<head><title>Hello World</title></head>
<body>
<%
our.println(“<h1>Hello World<h1>”);
%>
</body>
</html>
Lập trình theo mô hình MVC
Nếu xây dựng ứng dụng web mà chỉ sử dụng servlet thì rất khó
khăn để nhúng mã html vào mã java.
Nếu chỉ dùng jsp thì lại lộn xộn trong việc nhúng mã java vào mã
html.
Vì vậy phải kết hợp servlet và jsp.
Sử dụng mô hình MVC để kết hợp servlet và jsp được sử dụng phổ
biến.
Mô hình MVC 1
Mô hình MVC 1 còn được gọi là mô hình lập trình cổ điển.
Người thiết kế giao diện cũng là người lập trình.
Khó tìm lỗi và bảo trì vì mã Java lẫn lộn mã Html.
Sơ đồ biểu diễn mô hình MVC 1
Mô hình MVC 2
Khắc phục những khuyết điểm của mô hình 1.
Chia ứng dụng thành 3 phần rõ ràng: Model – View – Controller.
Người thiết kế giao diện không phụ thuộc vào người viết mã.
Sơ đồ biểu diễn mô hình MVC 2
Ví dụ MVC2
Tạo một ứng dụng đăng nhập theo mô hình MVC2:
View: Login.jsp, LoginFail.jsp, LoginSuccess.jsp
Model: DataConnect.java, UserInfo.java
Controller: LoginServlet.java
Ví dụ MVC2 – view – Login.jsp
<%@ page language="java" contentType="text/html;
charset=UTF-8“ pageEncoding="UTF-8"%>
<html><head><title>Login</title></head>
<body>
<form method="post" action="loginServlet">
<table align="center">
<tr><td>Username:</td><td><input type="text"
name="username"></td></tr>
<tr><td>Password:</td><td><input type="password"
name="password"></td></tr>
<tr><td><input type="submit" value="Submit"></td></tr>
</table></form></body></html>
Ví dụ MVC2 – view – LoginSuccess.jsp
<%@ page language="java" contentType="text/html;
charset=UTF-8“ pageEncoding="UTF-8"%>
<html><head><title>Login Success</title></head>
<body>
<jsp:useBean id="userinfo" class="model.UserInfo"
scope="session"/>
Username: <jsp:getProperty name="userinfo"
property="gUsername"/><br>
Fullname: <jsp:getProperty name="userinfo"
property="gFullname"/><br>
Address: <jsp:getProperty name="userinfo"
property="gAddress"/><br>
<a href="Login.jsp" >Return to Login page</a>
</body></html>
Ví dụ MVC2 – view – LoginFail.jsp
<%@ page language="java" contentType="text/html;
charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<title>Login Fail</title>
</head>
<body>
Login fail <br>
<a href="Login.jsp" >Return to Login page</a>
</body>
</html>
Ví dụ MVC2 – controller – LoginServlet.java
package controller;
import ….
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
RequestDispatcher myRD = null;
String myUsername = request.getParameter("username");
String myPassword = request.getParameter("password");
DataConnect myDC = new DataConnect();
if (myUsername == null || myUsername.trim().length() == 0) {
•
myRD = request.getRequestDispatcher("LoginFail.jsp");
} else {
•
UserInfo myUserInfo = myDC.connectDatabase(myUsername,
myPassword);
•
request.setAttribute("userinfo", myUserInfo);
•
if (myUserInfo == null) {
myRD = request.getRequestDispatcher("LoginFail.jsp");
•
} else {
myRD = request.getRequestDispatcher("LoginSuccess.jsp");
•
}}myRD.forward(request, response);}}
Ví dụ MVC2 – model – UserInfo.java
package model;
public class UserInfo {
private String gUsername;
private String gFullname;
private String gAddress;
private String gPassword;
public String getgUsername() {
return gUsername;
}
public void setgUsername(String gUsername) {
this.gUsername = gUsername;
}
…………
}
Ví dụ MVC2 – model – DataConnect.java
package model;
import java.sql.*;
public class DataConnect {
public UserInfo connectDatabase(String pUsername, String pPassword)
{
Connec database
ResultSet myResultSet = myStatement.executeQuery(mySqlQuery);
while (myResultSet.next()) {
String myUsername = myResultSet.getString("username");
….
if (pUsername.equals(myUsername)
&& pPassword.equals(myPassword)) {
myUserObject = new UserInfo();
myUserObject.setgUsername(myUsername);
…
break;
}}……….
return myUserObject;
}}
Tổng kết
Để lập trình ứng dụng web theo công nghệ java thì phải có kiến
thức về java, servlet, jsp.
Nên lập trình ứng dụng web theo mô hình MVC.
Đối với ứng dụng web quy mô lớn thì nên sử dụng các framwork
MVC như: Struts, Spring.