1. Struts2框架概述:
Struts2是一种基于MVC模式的轻量级Web框架,是Struts1与WebWork技术的基础上进行合并后的全新框架(与Struts1有很大的区别)。在传统方式的开发中,有一次请求就会对应一个Servlet。这样导致出现很多Servlet,而Struts2将所有的请求都先经过过滤器,在过滤器中实现框架的部分功能,剩下的具体操作提交到具体的Action中。Struts下载地址:https://struts.apache.org/
2. 搭建Struts2框架
导包
- 解压Struts文件
- apps -----> struts2-blank.war 文件解压
- WEB-INF -----> lib 下的jia包就是所需要的包
书写Action类
1.新建一个后缀名为Action的普通类 继承ActionSupport类
2.创建一个返回值为String类型,无参数的方法
1 import com.opensymphony.xwork2.ActionSupport; 2 3 public class HelloWorldAction extends ActionSupport { 4 5 public String hello() { 6 7 System.out.println("hello world"); 8 return "success"; 9 10 } 11 12 }
书写src/struts.xml
新建一个strut.xml的文件
文件内写入约束(导入后的Struts2-core jar包中的Struts-2.*.dtd中的一段话 )
接下来开始配资
<struts> <!-- package:將Action封裝,可以配置很多action name:给包起个名字,起到标识作用,不能与其他的重复 namespace:给action的访问路径定义一个命名空间 extends:继承一个指定堡struts—default abstract属性:包是否为抽象的;标识属性,表示该包不能独立运行,专门被继承,给看代码的人看的无用 --> <package name="hello" namespace="/hello" extends="struts-default"> <!-- action属性:配置action类 name属性:决定Action访问的资源名 class属性:action的完整类名 method属性:指定调用Action中的那个方法来处理请求 --> <action name="helloAction" class="com.mabt.struts2.HelloWorldAction" method="hello"> <!-- result属性:结果配置 name属性:标识结果处理的名称,与action中的method的返回值相对应 type属性:指定调用哪一个result类来处理结果,默认使用转发 标签体:填写页面的相对路径 --> <result name="success">/hello.jsp</result> </action> </package> </struts>
将struts2核心过滤配置到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>
测试
3. Struts 常量配置
常量的默认位置
默认的位置在default.properties文件中
修改的方式
第一种:用struts.xml文件进行修改
用<constant>标签进行修改
第二种:用struts.properties文件进行修改
第三种:用web.xml进行修改
用<context-param>标签进行修改
常用的常量
4. 动态方法调用
<struts> <package name="hello" namespace="/hello" extends="struts-default"> <!--动态调用hello方法(访问时用hello代替*),*前面,helloAction后面可为任何字符,也可没有--> <action name="helloAction_*" class="com.mabt.struts2.HelloWorldAction" method="{1}" > <!--method="{1}"标识将第一个*传来的值给method--> <result name="success">/hello.jsp</result> </action> </package> </struts>
5. struts.xml中 默认值的设置
action 的 method属性的默认值为:execute;
result 的 name 属性的默认值为 :success
result 的 type 属性的默认值为: dispatcher 转发;
<!-- action 的 method属性的默认值为:execute; result 的 name 属性的默认值为 :success result 的 type 属性的默认值为: dispatcher 转发;
--> <!--找不到包中的action,hello.jsp会作为默认的action处理请求 --> <default-action-ref name="/hello.jsp"></default-action-ref>