Cài đặt server Tomcat 1 Bước 1: Cài đặt môi trường JDK, tomcat và axis: Giải nén tập tin jakarta-tomcat-4.0.6.zip tại tomcat-4.0.6 C:\Webservice\jakarta-Giải nén tập tin xml-axis-beta1.z
Trang 1Lập trình mạng J2EE patterns
Giảng viên: TS Nguyễn Mạnh Hùng
Học viện Công nghệ Bưu chính Viễn thông (PTIT)
Trang 2Nội dung
Trang 3J2EE patterns
Trang 4Kiến trúc J2EE với WS
[image source: http://media.wiley.com/]
Trang 5[image source:
http://java.sun.com/]
Trang 7Lập trình web với JSP
Trang 8Java – JSP - Tomcat
DB
Bean DAO
Control
Trang 9Ví dụ: login trên web
DB
entity.User dao.UserDAO
Trang 10Cài đặt server Tomcat (1)
Bước 1: Cài đặt môi trường JDK, tomcat và axis:
Giải nén tập tin jakarta-tomcat-4.0.6.zip tại tomcat-4.0.6
C:\Webservice\jakarta-Giải nén tập tin xml-axis-beta1.zip tại C:\Webservice\xml-axis-beta1 Cài đặt JDK tại C:\Program Files\Java\jdk1.6.0_21
Copy thư mục axis (C:\Webservice\xml-axis-beta1\webapps\axis) vào trong thư mục webapps (C:\Webservice\jakarta-tomcat-
4.0.6\webapps)
Copy tập tin xerces.jar
(C:\Webservice\jakarta-tomcat-4.0.6\common\lib\xerces.jar) vào trong thư mục lib
(C:\Webservice\jakarta-tomcat-4.0.6\webapps\axis\WEB-INF\lib)
Trang 11Lớp bean: entity.User
package entity;
public class User {
private String username ;
private String password ;
public User(){}
public User(String username, String password){
this username = username;
this password = password;
}
public String getUsername() {
return username ; }
public void setUsername(String username) {
this username = username;
}
public String getPassword() {
return password ; }
public void setPassword(String password) {
this password = password;
}
}
Trang 12public class UserDAO {
Connection conn = null;
public UserDAO(String dbUsername, String dbPassword) {
String dbUrl = "jdbc:mysql://your.database.domain/yourDBname" ;
String dbClass = "com.mysql.jdbc.Driver" ;
Trang 13Lớp DAO: dao.UserDAO (2)
public boolean checkLogin(entity.User user){
String query = "Select * FROM users WHERE username = ? AND password = ?" ;
Trang 14Cấu hình vào server Tomcat
Bước 1: Tạo một thư mục « test » trong thư mục:
Trang 15Cách 1: dùng parameter
Trang 16Trang Home.jsp (1)
<%@page language="java" import = " java.util.*, java.awt.*, entity.*, dao.*" %>
<% String msg = request.getParameter("ok"); %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>JSP demo test</TITLE>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
</HEAD>
<BODY leftMargin=0 topMargin=0>
<table border="0" cellpadding="0" cellspacing="0" >
<input type="password" name="password" size="12"></p>
<p align="left"> <input type="submit" value="Submit" name="B1">
<input type="reset" value="Reset" name="B2"></p>
Trang 17Trang Home.jsp (2)
Trang 18Trang doLogin.jsp
<%@page language="java" import = "java.util.*, java.awt.*, entity.*, dao.*"%>
<%
String username = (String)request.getParameter("username");
String password = (String)request.getParameter("password");
Trang 19<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>JSP demo test</TITLE>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
</HEAD>
<BODY leftMargin=0 topMargin=0>
Welcome <%= user.getUsername() %>!
</BODY></HTML>
Trang 20Trang UserHome.jsp (2)
Trang 21Cách 2: dùng bean
(Khác biệt trong doLogin.jsp)
Trang 22Trang Home.jsp (1)
<%@page language="java" import = " java.util.*, java.awt.*, entity.*, dao.*" %>
<% String msg = request.getParameter("ok"); %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>JSP demo test</TITLE>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
</HEAD>
<BODY leftMargin=0 topMargin=0>
<table border="0" cellpadding="0" cellspacing="0" >
<input type="password" name="password" size="12"></p>
<p align="left"> <input type="submit" value="Submit" name="B1">
<input type="reset" value="Reset" name="B2"></p>
Trang 23Trang Home.jsp (2)
Trang 24Trang doLogin.jsp
<%@page language="java" import = "java.util.*, java.awt.*, entity.*, dao.*"%>
<jsp:useBean id="user" class="entity.User" scope="request"/>
<jsp:setProperty name="user" property="*"/>
Trang 25<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>JSP demo test</TITLE>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
</HEAD>
<BODY leftMargin=0 topMargin=0>
Welcome <%= user.getUsername() %>!
</BODY></HTML>
Trang 26Trang UserHome.jsp (2)
Trang 27JSP và Web service
Trang 29Lớp bean: entity.Calculator
package entity;
public class Calculator {
private double firstnumber ;
private double secondnumber ;
private String result ;
Trang 30public entity.Calculator calculate(String methodName, entity.Calculator cal){
String endpointURL= "http://localhost:8080/axis/Calculator.jws" ; Service service=new Service();
try{
Call call=(Call)service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endpointURL));
call.setOperationName(methodName);
call.addParameter( "a" , XMLType.XSD_DOUBLE, ParameterMode.PARAM_MODE_IN);
call.addParameter( "b" , XMLType.XSD_DOUBLE, ParameterMode.PARAM_MODE_IN);
Trang 31Cấu hình vào server Tomcat
Bước 1: Tạo một thư mục « test » trong thư mục:
Trang 32Trang add.jsp (1)
<%@page language="java" import = " java.util.*, java.awt.*, entity.*, dao.*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>JSP demo test</TITLE>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
</HEAD>
<BODY leftMargin=0 topMargin=0>
<table border="0" cellpadding="0" cellspacing="0" >
<input type="text" name="secondnumber" size="12"></p>
<p align="left"><input type="submit" value="Submit" name="B1">
<input type="reset" value="Reset" name="B2"></p>
Trang 33Trang Home.jsp (2)
Trang 34Trang doAdd.jsp (1)
<%@page language="java" import = "java.util.*, java.awt.*, entity.*, dao.*, control.*"%>
<jsp:useBean id="calculator" class="entity.Calculator" scope="request"/>
<jsp:setProperty name="calculator" property="*"/>
<%
if (calculator != null){
CalculatorCtr cal = new CalculatorCtr();
calculator = cal.calculate("add", calculator);
}
session.setAttribute("calculator",calculator);
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>JSP demo test</TITLE>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
</HEAD>
<BODY leftMargin=0 topMargin=0>
The sum of <%= calculator.getFirstnumber() %> and
<%= calculator.getSecondnumber() %> is: <%= calculator.getResult() %>
</BODY></HTML>
Trang 35Trang doAdd.jsp (2)
Trang 36Bài tập
toán tìm USCLN
toán giải phương trình bậc hai
Trang 37Struts framework
Trang 38Kiến trúc Struts
[image source:http://j2ee.masslight.com/]
Trang 39Login dùng Struts
Trang 40Các lớp java
Trang 41public class User extends org.apache.struts.action.ActionForm {
private String username ;
private String password ;
if ( username == null || username length() < 1) {
errors.add( "userName" , new ActionMessage( "error.username.required" )); }
if ( password == null || password length() < 1) {
errors.add( "password" , new ActionMessage( "error.password.required" )); }
return errors;
}
}
Trang 42public class UserDAO {
Connection conn = null;
Trang 43Lớp DAO: dao.UserDAO (2)
public boolean checkLogin(entity.User user){
String query = "Select * FROM users WHERE username = ? AND password = ?" ;
Trang 44public class LoginAction extends org.apache.struts.action.Action {
/* forward name="success" path="" */
private final static String SUCCESS = "success" ;
private final static String FAILURE = "failure" ;
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
entity.User loginForm = (entity.User) form;
dao.UserDAO userDAO = new dao.UserDAO();
Trang 45Các trang jsp
Trang 46login.jsp (1)
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
User Name : <html:text name="User" property="username" /> <br>
Password : <html:password name="User" property="password" /> <br>
<html:submit value="Login" />
</html:form>
</body>
</html>
Trang 47login.jsp (2)
Trang 48Trang success.jsp (1)
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
<h1>Login Success Welcome
<bean:write name="User" property="username"></bean:write></h1>
</body>
</html>
Trang 49Trang success.jsp (2)
Trang 50Trang failure.jsp (1)
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
Trang 51Trang failure.jsp (2)
Trang 52Các file config
Trang 55<forward name="success" path="/success.jsp" />
<forward name="failure" path="/failure.jsp" />
Trang 56- <plug-in className="org.apache.struts.tiles.TilesPlugin">
<set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />
<set-property property="moduleAware" value="true" />
</plug-in>
- <!
========================= Validator plugin =================================
>
- <plug-in className="o rg.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="
/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
</plug-in>
</struts-config>
Trang 57File properties
error.username.required = User Name is required
error.password.required = Password is required
Trang 58Web service dùng Struts
Trang 59public class Calculator extends org.apache.struts.action.ActionForm{
private String firstnumber , secondnumber , result ;
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { ActionErrors errors = new ActionErrors();
if ( firstnumber == null || firstnumber length() < 1) {
errors.add( "firstnumber" , new ActionMessage( "error.firstnumber.required" )); }else {
try{ Double.parseDouble(firstnumber );
}catch(Exception e){
errors.add( "firstnumber" , new ActionMessage( "error.firstnumber.double" )); }
}
if ( secondnumber == null || secondnumber length() < 1) {
errors.add( "secondnumber" , new ActionMessage( "error.secondnumber.required" )); }else {
try{ Double.parseDouble(secondnumber );
Trang 60public class CalculatorCtr extends org.apache.struts.action.Action{
private final static String RESULT = "result" ;
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
entity.Calculator calculator = (entity.Calculator) form;
form = calculate( "Add" , calculator);
return mapping.findForward(RESULT);
}
}
Trang 61control.CalculatorCtr (2)
public entity.Calculator calculate(String methodName, entity.Calculator cal){
String endpointURL= "http://localhost:8080/axis/Calculator.jws" ; Service service=new Service();
String result=(String)call.invoke(new
Object[]{Double.parseDouble(cal.getFirstnumber()), Double.parseDouble(cal.getSecondnumber())});
Trang 62add.jsp (1)
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Web service: Add</title>
</html:form>
</body>
</html>
Trang 63add.jsp (2)
Trang 64result.jsp (1)
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Web service: Add result</title>
</head>
<body>
The sum of <bean:write name="Calculator" property="firstnumber"></bean:write>
and <bean:write name="Calculator" property="secondnumber"></bean:write>
is <bean:write name="Calculator" property="result"></bean:write>
</body>
</html>
Trang 65result.jsp (2)
Trang 69- <plug-in className="org.apache.struts.tiles.TilesPlugin">
<set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />
<set-property property="moduleAware" value="true" />
</plug-in>
- <!
========================= Validator plugin =================================
>
- <plug-in className="o rg.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="
/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
</plug-in>
</struts-config>
Trang 70File properties
error.firstnumber.required = First number is required
error.secondnumber.required = Second number is required
error.firstnumber.double = First number must be in a double format
error.secondnumber.double = Second number must be in a double format