struts2
1.Struts2 是一个基于MVC的设计模式,的WEB应用层的框架啊,本质上就是一个Servlet
2.在MVC的设置模式中,Struts2处于控制层,来进行建立模型与视图的数据交互,
3.Struts2以WEBWork来为核心作为基础,进行运行的
创建工程加载对应的jar包
asm-3.3.jar
asm-commons-3.3.jar
asm-tree-3.3.jar
commons-fileupload-1.3.1.jar
commons-io-2.2.jar
commons-lang3-3.2.jar
freemarker-2.3.22.jar
javassist-3.11.0.GA.jar
log4j-api-2.2.jar
log4j-core-2.2.jar
ognl-3.0.6.jar
struts2-core-2.3.24.jar
xwork-core-2.3.24.jar
在SRC目录创建 .xml文件
导入 dtd文件头
}
进行配置Struts的xml文件
<package extends="struts-default" name="hello" namespace="/hello">
<action class="com.java.struts.action.Test_Action_01" method="execute" name="Test_Action_01">
<result name="success">/success.jsp</result>
</action>
</package>
进行配置WEB.xml文件
<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>
配置文件的描述
<struts>
</struts>
<!--
package
Action 的进行封装。可以进行配置多个action
name
取名称,不要重复
namespace
给action 的访问路径定义的一个名称空间
extends
继承默认一个拦截器 的一个名称
abstract="" 包是否为抽象的,标识。属性,此包不能直接运行,只能继承
ture 抽象 false 非抽象(默认的)
如 <package name=,"struts-default" abstract="true">
-->
<package name="hello" namespace="/hello" extends="struts-default">
<!-- 可以进行定义全局的结果集-->
<global-results>
<!--
result 执行返回的结果集的
name="outLogin" 名称
type = 跳转的类型 重定向 或者 转发
-->
<result name="outLogin" type="redirect">/login.jsp</result>
</global-results>
<!--
当出现异常的时候进行跳转到错误的页面的
-->
<global-exception-mappings>
<!--
exception="`" 异常的包路径如:java.long.Exception
result="" 跳转的页面的名称 如 error
-->
<exception-mapping exception="`" result=""></exception-mapping>
</global-exception-mappings>
<!--
name="Test_Action_01"
名称-路径访问的地址名称
class=
action完整的类路径
method=
调用action类中的方法 ,处理请求的方法
-->
<action name="Test_Action_01" class="com.java.struts.action.Test_Action_01" method="execute">
<!--
进行处理结果的
name="success" 标识结果处理的名称(执行某个方法返回的值,必须是一致)
type = 跳转的类型 重定向 或者 转发(默认)
标签体:编写就是页面的路径 /success.jsp
-->
<result name="success" >/success.jsp</result>
<result name="success01">/success.jsp</result>
</action>
</package>
<!--可以进行引入其他的struts.xml文件-->
<include file="com\java\struts\action\struts.xml"></include>常用的配置
struts.i18n.encoding=UTF-8 格式化字符集编码
方式一:
进行配置
<struts>
方式二
<context-param>
<param-name>struts.i18n.encoding</param-name>
<param-value>utf-8</param-value>
</context-param>
常用配置的使用</struts>
<!--进行配置格式化字符集的--> <constant name="struts.i18n.encoding" value="utf-8"></constant> <!-- 指定请求路径地址的action 的后缀名 --> <constant name="struts.action.extension" value="action,,"></constant> <!--进行配置开发模式--> <constant name="struts.devMode" value="false"></constant> <!--进行配置动态方法进行调用 是否开启 默认false--> <constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
动态的加载
方式一
<!--进行配置格式化字符集的-->
<constant name="struts.i18n.encoding" value="utf-8"></constant>
<!--进行配置动态方法进行调用 是否开启 默认false-->
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
<package name="hello" namespace="/hello" extends="struts-default">
<action name="Test_Action01" class="com.test.struts.action.Test_Action01" >
<result name="success" >/success.jsp</result>
</action>
</package> 页面执行
</form>
方式二:
<package extends="struts-default" name="hello" namespace="/hello">
<action class="com.test.struts.action.Test_Action01" method="{1}" name="Test_Action01_*">
<result name="success">/success.jsp</result>
</action>
</package>
--
<form action="hello/Test_Action01_getAdd" method="post">
</form>
转发和重定向
<action class="com.java.struts.action.Test_Action_01" name="Test_Action_01">
<!–转发–>
<result name="success" type="dispatcher">/success.jsp</result>
<!–重定向–>
<result name="del" type="redirect">/success.jsp</result>
</action>
action 和action之间的转发
<action class="com.java.struts.action.Test_Action_01" method="getAdd" name="Test_Action_01">
<result name="success" type="dispatcher">/success.jsp</result>
</action>
<action name="Test_Action_02" class="com.java.struts.action.Test_Action_02" >
<!--转发 到 action中 Test_Action_02 准发到 Test_Action_01-->
<interceptor-ref name="basicStack" />
<result name="success" type="chain">Test_Action_01</result>
</action>action 和action之间的重定向
<action class="com.java.struts.action.Test_Action_01" method="getAdd" name="Test_Action_01">
<result name="success" type="dispatcher">/success.jsp</result>
</action>
<action class="com.java.struts.action.Test_Action_03" name="Test_Action_03">
<result name="success" type="redirectAction">
<object>Test_Action_01
/hello
</object></result>
</action>
Struts2 中获取Servlet的API
public String getAdd(){
ActionContext.getContext().put("name","RequestName");//相当于Servlet中的request域
//session
Map<String, Object> session = ActionContext.getContext().getSession();
session.put("lastName","sessionName");
//appliaction
Map<String, Object> application = ActionContext.getContext().getApplication();
application.put("lastAge","application");
return "success";
} <action name="Test_Action_04_Servlet" class="com.java.struts.action.Test_Action_04_Servlet" >
<result name="success" >/success.jsp</result>
</action>---
\
{requestScope.name}
\
{sessionScope.lastName}
\
{applicationScope.lastAge}
获取页面数据对象了
方式一:
*/
public class Users {
private Integer id;
private String name;
private Date date;
//get set 方法
public class Test_Action_05_User extends ActionSupport {
//获取页面的数据
private Users users; //对应的get set 方法
public String getAdd(){
System.out.println("页面的数据信息::"+users);
return "success";
}
-----
<action name="Test_Action_05_User" class="com.java.struts.action.Test_Action_05_User" >
<result name="success" >/success.jsp</result>
</action>
页面的提交
<FORM ACTION="hello/Test_Action_05_User!getAdd" method="post" >
<%--是属性名称 get set 方法的名称 去掉get set 首字母小写--%>
<input TYPE="text" NAME="users.name" VALUE="小王"><br/>
<input TYPE="text" NAME="users.id" VALUE="123"><br/>
<input TYPE="text" NAME="users.date" VALUE="2019-12-12"><br/>
<INPUT TYPE="submit" VALUE="提交"><BR/>
</FORM>方式二:
public class Test_Action_06_User extends ActionSupport implements ModelDriven<users> {
//获取页面的数据
private Users users=new Users();</users>
public String getAdd(){
System.out.println("页面的数据信息::"+users);
return "success";
}
@Override
public Users getModel() {
return users;
}}
------------
<action class="com.java.struts.action.Test_Action_06_User" name="Test_Action_06_User">
<result name="success">/success.jsp</result>
</action>
-----------
<FORM ACTION="hello/Test_Action_06_User!getAdd" method="post" >
<input TYPE="text" NAME="name" VALUE="小王"><br/>
<input TYPE="text" NAME="id" VALUE="123"><br/>
<input TYPE="text" NAME="date" VALUE="2019-12-12"><br/>
<INPUT TYPE="submit" VALUE="提交"><BR/> 获取集合数据
public class Test_Action_07_List extends ActionSupport{
private List<String> list;
public String getAdd(){
for (String o : list) {
System.out.println(o);
}
return "success";
}
public List<String> getList() {
return list;
}
public void setList(List<String> list) {
this.list = list;
}}----------
<action name="Test_Action_07_List" class="com.java.struts.action.Test_Action_07_List" >
<result name="success" >/success.jsp</result>
</action>
---------页面<form action="hello/Test_Action_07_List!getAdd" method="post"> <%--是属性名称 get set 方法的名称 去掉get set 首字母小写--%> 获取map数据
public class Test_Action_08_Map extends ActionSupport{
private HashMap<String,Object> map;
public String getAdd(){
System.out.println(map);
return "success";
}
public HashMap<String, Object> getMap() {
return map;
}
public void setMap(HashMap<String, Object> map) {
this.map = map;
}}
xml的编写
<action name="Test_Action_08_Map" class="com.java.struts.action.Test_Action_08_Map" >
<result name="success" >/success.jsp</result>
</action><%--是属性名称 get set 方法的名称 去掉get set 首字母小写--%>
</form>

京公网安备 11010502036488号