入門案例:登錄判斷;
采用兩種方式對比:servlet 與 struts2
struts2的包結構:
一,采用servlet實現登錄
1.基本jsp頁面確定,登錄表單提交,與兩個結果頁面,登錄成功與登錄失敗頁面,代碼如下:

1 《login.jsp》 2 <body> 3 <form action="${pageContext.request.contextPath }/login" method="post"> 4 username:<input type="text" name="username"> 5 password:<input type="password" name="password"> 6 <input type="submit" name='login'> 7 </form> 8 </body> 9 <body> 10 《failer.jsp》 11 <h1> 失敗</h1> 12 </body> 13 《success.jsp》 14 <body> 15 <h1> 成功!</h1> 16 </body>
2.servlet書寫,創建一個loginServlet.java,注意設置的響應后綴與提交頁面的后綴一樣!

1 public class loginServle extends HttpServlet { 2 private static final long serialVersionUID = 1L; 3 4 public loginServle() { 5 super(); 6 } 7 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 8 String name=request.getParameter("username"); 9 String pass=request.getParameter("password"); 10 if("tom".equals(name)&&"123".equals(pass)) { 11 response.sendRedirect(request.getContextPath()+"/success.jsp"); 12 }else { 13 response.sendRedirect(request.getContextPath()+"/failer.jsp"); 14 } 15 } 16 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 17 doGet(request, response); 18 } 19 }
3.確認web.xml的配置信息,是否正確(僅顯示主要代碼)

1 <servlet> 2 <description></description> 3 <display-name>loginServle</display-name> 4 <servlet-name>loginServle</servlet-name> 5 <servlet-class>com.loginServle</servlet-class> 6 </servlet> 7 <servlet-mapping> 8 <servlet-name>loginServle</servlet-name> 9 <url-pattern>/login</url-pattern> 10 </servlet-mapping>
二,采用struts2實現登錄
1.同樣使用上面的三個jsp頁面
2.導入struts2的jar包(主要的13個包,選取struts2里面的apps中的實例項目中的Lib文件拷貝到本項目的Lib文件夾中)
3.配置web.xml信息,手動寫入filter(攔截器) 的名字和源代碼路徑,再寫入攔截器的映射條件,此處設置位/*,詳見下面代碼:

1 <servlet> 2 <description></description> 3 <display-name>loginServle</display-name> 4 <servlet-name>loginServle</servlet-name> 5 <servlet-class>com.loginServle</servlet-class> 6 </servlet> 7 <servlet-mapping> 8 <servlet-name>loginServle</servlet-name> 9 <url-pattern>/login</url-pattern> 10 </servlet-mapping>
4.配置struts.xml,這個是把攔截器攔截到的請求信息映射到具體的Action類中,就和servlet很像,基本結構就是package與action還要result,具體的功能,后面介紹

1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE struts PUBLIC 3 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" 4 "http://struts.apache.org/dtds/struts-2.3.dtd"> 5 <struts> 6 <package name="default" namespace="/" extends="struts-default"> 7 <action name="struts2" class ="com.strutsAction" method="show"></action> 8 <action name="login" class ="com.loginAction" method="login"> 9 <result name="success">/success.jsp</result> 10 <result name="failer">/failer.jsp</result> 11 </action> 12 </package> 13 </struts>
5.Action的創建,這個只是一個簡單的java類,沒有繼承,但是類的成員名字要和請求中的參數名字相同,才能把信息提取出來。

1 public class loginAction { 2 private String username; 3 private String password; 4 5 public String getUsername() { 6 return username; 7 } 8 public String getPassword() { 9 return password; 10 } 11 public void setUsername(String username) { 12 this.username = username; 13 } 14 public void setPassword(String password) { 15 this.password = password; 16 } 17 public String login() { 18 //如何獲取請求參數,這里又不是servlet!!! 19 System.out.println("訪問到了login()方法"); 20 System.out.println(username+" "+password); 21 if("tom".equals(username)&&"123".equals(password)) { 22 System.out.println("登錄密碼正確"); 23 return "success"; 24 }else { 25 return "failer"; 26 } 27 } 28 }
結果頁面:login: failer.jsp success.jsp
評價:struts包裝了servlet,完成它的功能,在基本的web網站開發中,基本的請求就是:1.在servlet中獲取數據;2.根據業務完成邏輯操作;3.跳轉頁面;對於這些同一個套路的東西,其底層代碼相同,所以直接使用了相同的代碼,就創建了這個框架,便於簡化開發,直接使用接口就完畢,省時間。
======================================================================
struts2的開發架構模式:
web的架構模式:
dao
domain
service
web
struts2運用的好處: