Struts2_day01
Struts2課程安排
第一天 struts2 入門 2017年10月27日
第二天 struts2 數(shù)據(jù) 2017年10月28日
第三天 struts2 值棧 2017年10月29日
第四天 struts2攔截器 2017年10月30日
Struts2概述
struts2框架應用javaee三層結(jié)構(gòu)中web層框架
struts2框架在struts1和webwork基礎之上發(fā)展全新的框架
-
struts2解決問題:
-
struts2版本
比較穩(wěn)定版本
struts-2.3.24-all
-
web層常見框架
(1)struts2
(2)springMVC
Struts2框架入門
1. 導入jar包
(1)在lib中有jar包梅掠,不能把這些jar都導入到項目中
(2)到apps目錄里面泽艘,找到示例程序秃踩,從示例程序復制jar包
2. 創(chuàng)建action
package com.ghw.action;
public class HelloAction {
/*
* (1)每次訪問servlet時候组哩,都會執(zhí)行service方法
* - 寫類集成HttpServlet亿驾,重寫類里面的方法
* - 在web.xml中配置servlet訪問路徑
* (2)訪問action黄娘,每次訪問action時候,默認執(zhí)行名稱execute方法
*/
public String execute() {
return "ok";
}
}
3. 配置action類訪問路徑
(1)創(chuàng)建struts2核心配置文件
- 核心配置文件名稱和位置是固定的
- 位置必須在src下面天通,名稱 struts.xml
(2)引入dtd約束
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
(3)action配置
<!-- name:訪問名稱 -->
<action name="hello" class="com.ghw.action.HelloAction">
<!-- 配置方法的返回值到頁面 -->
<result name="ok">/hello.jsp</result>
</action>
訪問路徑:http://127.0.0.1:8080/struts2_day01/hello.action
第四步 配置struts2過濾器
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Struts2執(zhí)行過程
畫圖分析過程
查看源代碼
Struts2的核心配置文件
struts.xml
- 名稱和位置固定的
- 在配置文件中主要三個標簽package泊窘、action、result像寒,還有標簽里面的屬性
一烘豹、標簽package
類似于代碼包,區(qū)別不同的action萝映,要配置action必須先寫package標簽吴叶,在package標簽里面才能配置action
-
package標簽屬性
(1)name屬性
- name屬性值和功能本身沒有關系
- 在一個配置文件中可以有多個package標簽阐虚,name的值不能相同
(2)extends屬性
extends="struts-default
- 屬性值固定的序臂,struts-default
- 寫了這個屬性值,在package里面配置的類具有action功能
(3)namespace屬性
- namespace屬性值和action標簽里面的name屬性值構(gòu)成訪問路徑
二实束、標簽action
action標簽配置action訪問路徑
-
action標簽屬性
- name屬性
- namespace屬性值和action標簽里面的name屬性值構(gòu)成訪問路徑
- 在package標簽里面寫多個action標簽奥秆,但是action的name屬性值不能相同的
- class屬性
- action全路徑
- method屬性
- 比如在action里面默認執(zhí)行的方法execute方法,但是在action里面寫其他的方法
- 讓action里面多個方法執(zhí)行咸灿,使用method進行配置
三构订、標簽result
根據(jù)action的方法返回值,配置到不同的路徑里面
-
result標簽屬性
(1)name屬性
- 和方法返回值一樣
(2)type屬性
- 配置如何到路徑中(轉(zhuǎn)發(fā)或者重定向)
- type屬性默認值避矢,做轉(zhuǎn)發(fā)操作
Struts2常量配置
struts2框架悼瘾,幫我們實現(xiàn)一部分功能囊榜,struts2里面有常量,在常量里面封裝一部分功能
struts2默認的常量位置(記缀ニ蕖)
-
修改struts2默認常量值
(1)常用的方式
- 在struts.xml中進行配置
(2)還有兩種方式(了解)
- 在src下面創(chuàng)建 struts.properties卸勺,進行修改
- 在web.xml進行配置
-
介紹最常用常量(明天演示)
(1)表單提交數(shù)據(jù)到action里面,在action可以獲取表單提交數(shù)據(jù)烫扼,
(2)表單提交數(shù)據(jù)有中文曙求,有亂碼問題,解決:
- post提交直接設置編碼
- get提交做編碼轉(zhuǎn)換
(3)如果在action獲取表單通過post方式提交中文映企,中文亂碼問題幫解決了悟狱,不需要自己處理問題
分模塊開發(fā)
- 單獨寫配置文件,把配置文件引入到核心配置文件中
Action編寫方式
-
action編寫有三種方式
第一種 創(chuàng)建普通類堰氓,這個不繼承任何類挤渐,不實現(xiàn)任何接口
public class HelloAction
第二種 創(chuàng)建類,實現(xiàn)接口 Action
public class HelloAction implements Action { public String execute() throws Exception { return "ok"; } }
第三種 創(chuàng)建類双絮,繼承類 ActionSupport(一般使用)
import com.opensymphony.xwork2.ActionSupport; public class HelloAction extends ActionSupport { public String execute() { return "ok"; } }
訪問action的方法(重點)
- 有三種方式實現(xiàn)
1. 使用action標簽的method屬性
在這個屬性里面寫執(zhí)行的action的方法
-
創(chuàng)建action挣菲,創(chuàng)建action方法
public class HelloAction implements Action { public String add() { System.out.println("add....."); return NONE; } public String update() { System.out.println("update....."); return NONE; } public String execute() throws Exception { return null; } }
使用method配置
<package name="" extends="struts-default" namespace="/">
<action name="addAction" class="com.ghw.action.HelloAction" method="add"></action>
<action name="updateAction" class="com.ghw.action.HelloAction" method="update"></action>
</package>
2. 使用通配符方式實現(xiàn)
<package name="action1" extends="struts-default" namespace="/">
<action name="*" class="com.ghw.action.HelloAction" method="{1}"></action>
</package>
- 在action標簽里面name屬性,name屬性值里面寫 符號 * 星號
- {1}表示獲取*號的內(nèi)容
- 理解: 表示匹配任意內(nèi)容
- 比如訪問hello掷邦,* 可以匹配到
- 比如訪問add白胀,* 可以匹配到