struts2筆記(一)
一、J2EE框架概述
view -> controller -> model
jsp -> servlet -> javaBean->xxService->xxDao
(javaBean作為資料承載,service和dao作為業務處理)
二、struts引入
如果需要在url輸入網址,訪問後臺pojo類,可以使用servlet。
servlet: -> pojo:
class loginServlet extends HttpServlet{ class loginAction{
void doPost(request,response){ void excute();
new loginAction().excute(); }
}
}
如果不能使用servlet,只能使用過濾器,因為在java web專案中,能接收請求的只有servlet和filter。
filter: -> 同上
class loginServlet implements Filter{
void doFilter(request,response,chain){
new loginAction.excute();
chain.doFilter(request,response);
}
}
三、struts介紹
struts1:
1、建立web專案
2、為專案新增struts1各種包支援
-->Struts config path:Struts核心配置檔案路徑
-->ActionServlet name:請求處理的名稱
-->URL pattern:action的對映路徑
-->Base package for new classes:基本包名
-->Default application resources:預設應用程式資原始檔
點選'finish'後,開發工具會自動將struts相關的包匯入到專案中,並建立相關檔案。
3、新增Struts開發檔案
src->New->Other->Myeclipse->Web Struts 1.x->Struts Form,Action&Jsp
點選'finish',進入表單相關的引數配置
-->Use case:用例,暫時用請求名login代替
-->Superclass:父類,org.apache.struts.action.ActionForm
-->Form properties:配置表單需要的元素,完成登陸至少配置兩個元素,'username'、'password'
-->JSP:前端頁面
點選'finish',進入action配置
-->Superclass:父類,org.apache.struts.action.ActionForm
-->Scope:作用域
-->Input Source:輸入錯誤後跳轉的頁面
點選'finish'完成所有配置
struts2:
struts運用攔截器的概念,結合各種過濾器來獲取url。與struts1區別是,struts1是單例項(所有請求共享一個例項),struts2是多例項(一個請求一個例項),還引入'堆疊'的概念,可以達到與servletAPI完全解耦的目的。
1、建立一個web專案
2、新增struts2包支援
四、配置檔案
4.1、六大配置檔案
1、struts-default.xml struts預設配置 在struts2-core-2.2.1 jar包中
2、default.properties 預設常量配置 org.apache.struts2
3、web.xml 專案的配置檔案
4、struts.xml struts 核心配置檔案
5、struts.properties 自定義常量配置檔案
6、struts-plugin.xml 外掛配置
4.2、核心配置檔案
1、global-results元素
<package name = "user" namespace ="/" extends ="struts-default" >
<global-results>
<result name="error">/error.jsp</result>
</global-results>
</package>
可以配置多個action共享的結果集
2、default-action-ref元素
<package name = "user" namespace ="/" extends ="struts-default" >
<default-action-ref name="default"></default-action-ref>
<global-results>
<result name="error">/error.jsp</result>
</global-results>
<action name ="default" class="com.defaultAction">
<result name = "success">/404.jsp</result>
</action>
</package>
通常用於防止url輸入錯誤,顯示404錯誤頁面,但該頁面往往對使用者很不友好,可以使用該配置統一控制404顯示頁面3、default-class-ref元素
<package name = "user" namespace ="/" extends ="struts-default" >
<default-action-ref name="default"></default-action-ref>
<default-class-ref class="defaultAction"></default-action-ref>
<action name ="default" >
<result name = "success">/404.jsp</result>
</action>
</package>
action包忘記配置class時預設的action值
4、注意:
(在struts-2.1.dtd裡,default-action-ref在default-class-ref前面,default-calss-ref在global-results前面,所以程式碼也一樣)
4.3、協作配置
對一個專案而言,配置檔案會很多,此時可採用include標籤將各種配置檔案分開儲存(程式碼順序參照上幅圖片35行)
五、動態呼叫方法(通過url指定呼叫的方法)
5.1、動態配置
在不使用action的method屬性情況下,通過URL"/XXX!方法名"(例如http://localhost:8080/struts201/user/aaa!login.action)制定呼叫後臺的login方法,要實現url動態呼叫方法,需將"default.properties"中的"struts.serve.static.browserCache=true"設定為true,因為在struts2.1以上的版本,其預設值為false
5.2、使用萬用字元
<package name ="user" namespace = "/user" extends ="struts-default">
<action name ="user_*" calss ="com.loginAction" method ="{1}">
<result name ="success">/login.jsp</result>
</action>
</package>
----------------------------------------
<package name ="user" namespace = "/user" extends ="struts-default">
<action name ="*_*" calss ="com.{1}Action" method ="{2}">
<result name ="success">/login.jsp</result>
</action>
</package>
在action的name屬性中可以使用"*"去命名,那麼在其他屬性中需要使用"{0}"或者"{1}"或者"{2}"取出url路徑
六、接受請求引數
struts2是MVC的控制器,在整個請求過程中,對引數的處理是struts2的職責所在,接受和處理引數分為屬性驅動,模型驅動,域驅動等
6.1屬性驅動
直接在action的pojo類中宣告與表單一致的屬性,並生成匹配的get/set方法,struts2會自動將表單中的資料提交到action中,並直接給相應的屬性賦值
struts.xml核心程式碼:
<package name="user" namespace="/" extends="struts-default">
<action name="login" class="com.action.loginAction" >
<result name="success">/weclome.jsp</result>
<action name="login" class="com.action.loginAction" >
<result name="success">/weclome.jsp</result>
<result name="false">/index.jsp</result>
</action>
</package>
</action>
</package>
action程式碼:
package com.action;
public class loginAction {
private String username;
private String password;
private String error;
public String getError() {
return error;
}
public void setError(String error) {
this.error = error;
}
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;
}
public String execute() {
if (username.equals("admin") && password.equals("admin")) {
return "success";
} else {
this.error = "error";
return "false";
}
}
}
public class loginAction {
private String username;
private String password;
private String error;
public String getError() {
return error;
}
public void setError(String error) {
this.error = error;
}
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;
}
public String execute() {
if (username.equals("admin") && password.equals("admin")) {
return "success";
} else {
this.error = "error";
return "false";
}
}
}
jsp核心程式碼:
<body>
<span style="color: red;">${error}</span>
<form action="login.action" method="post">
username:<input type="text" name="username"><br>
possword:<input type="password" name="password"><br>
<input type="submit" value="submit"/>
</form>
</body>
6.2模型驅動
struts2中提供了一個叫模型驅動的攔截器,要使用此模型驅動填充引數,需action類實現ModelDriven介面
jsp程式碼:
action程式碼:
6.3域驅動
通常情況下,表單元素往往對應一個實體,實體又往往單獨放在實體層中,那麼此時需要在action中放入實體物件作為請求引數,域驅動的方式就是把實體類中的物件作為action的屬性
jsp程式碼:
action程式碼:
struts.xml程式碼:
pojo程式碼:
七、知識點:
轉發:request.getRequestDispatcher(path).forward(request,response);
重定向:request.sendRedirect(path);
表單驗證的方法 分為三層:1、客戶端的javascript指令碼驗證(對資料的合法性驗證)
2、控制器的伺服器驗證(對資料的合法性驗證)
3、對資料的有效性驗證(連線資料庫驗證正確性)
配置檔案都優先順序:web.xml>struts.properties>struts.xml>default.properties
struts.xml的action配置:
<package name = "user" namespace ="/user" extends ="struts-default" >
<action name ="aaa" class = "com.action.loginAction" method="login">
<result name = "success">/login.jsp</result>
</action>
</package>
jsp校驗:<span style="color: red;">${error}</span>
相關文章
- struts2學習筆記系列(一)筆記
- 風中葉之struts2學習筆記一筆記
- Struts2學習筆記(一)初識Strut2筆記
- Struts2框架快速入門筆記框架筆記
- Struts2筆記08 獲取值棧物件筆記物件
- Struts2筆記05 action操作域物件筆記物件
- Struts2筆記07 什麼是值棧筆記
- struts2學習筆記–使用servletAPI實現ajax的一個小Demo筆記ServletAPI
- Struts2筆記09 值棧的內部結構筆記
- struts2學習筆記–使用struts2外掛實現ajax處理(返回json資料)筆記JSON
- Struts2筆記10 向值棧放入或獲取資料筆記
- Struts2筆記06 封裝獲取表單資料方式筆記封裝
- struts2學習筆記–執行緒安全問題小結筆記執行緒
- 筆記一筆記
- Struts2教程1:第一個Struts2程式
- Dubbo筆記(一)筆記
- 前端筆記(一)前端筆記
- Scala筆記(一)筆記
- MyBatis筆記(一)MyBatis筆記
- RUST 筆記(一)Rust筆記
- docker筆記(一)Docker筆記
- Bootstrap筆記《一》boot筆記
- 機器學習筆記(一)機器學習筆記
- React筆記(一)React筆記
- TypeScript筆記(一)TypeScript筆記
- 爬蟲筆記(一)爬蟲筆記
- InnoDB文件筆記(一)筆記
- 一點git筆記Git筆記
- 學習筆記(一)筆記
- Pytorch筆記(一)PyTorch筆記
- Laravel框架筆記(一)Laravel框架筆記
- ECMAScript 6筆記(一)筆記
- 【筆記】oracle xml (一)筆記OracleXML
- 英國史筆記(一)筆記
- X$BH筆記<一>筆記
- Struts2框架學習(一)框架
- 【Struts2複習知識點一】-配置struts2環境
- 筆記:記錄一次面試筆記面試