一、搭建Struts2框架
下载Struts2:https://struts.apache.org/
1、导入Struts依赖包
解压:struts-2.3.37appsstruts2-blank.war
将解压后的 WEB-INFlib下的包导入到JavaWeb项目中
2、创建struts.xml
src下新建struts.xml文件
找到Libraries/Web App Libraries/struts2-core-2.3.37.jar/struts-2.3.dtd
为struts.xml导入约束,约束为上述dts文件中
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">
3.创建HelloAction类
在src下创建一般java类HelloAction,并添加方法HelloAt
public class HelloAction { public String HelloAt() { System.out.println("HelloAt"); return "success"; } }
4、注册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>
5、配置struts2.xml
<?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"> <struts> <package name="demo1" namespace="/He" extends="struts-default">
<default-action-ref name="helloA"></default-action-ref> <action name="helloA" class="Struts01.HelloAction" method="HelloAt"> <result name="success" type="dispatcher">/HelloAction.jsp</result> </action> </package> </struts>
启动项目在浏览器中访问:http://localhost:8080/Struts2_day01/He/helloA
6、配置补充说明:
package:将action封装,可以在package中配置很多action
name:给包起名字,起到标识作用,不能与其他包名重复
namespace:给action的访问定义一个命名空间
extends:继承一个指定包,struts-default在:Libraries/Web App Libraries/struts2-core-2.3.37.jar/struts-default.xml中
abstract:标识属性,标识该包不能独立运行,专门被继承
action:配置action类
name:Action访问的资源名称
class:Action完整的类名,默认值com.opensymphony.xwork2.ActionSupport,可在struts-default.xml中查看
method:指定调用Action中的哪个方法来处理请求,默认值execute
result:结果配置
name:处理结果的名称,与action方法的返回值对应,默认值success
type:指定调用哪一个result类来处理结果,默认使用转发,可在struts-default.xml中查看,默认值dispatcher
标签体:填写页面的相对路径
default-action-ref:如果找不到包下的action,会将配置中name中的action作为默认访问的action
7、struts常量配置
配置方式:1、在struts.xml中 2、新建struts.properties 3、在web.xml中配置
加载顺序同上,后配置内容会覆盖新配置内容,一般在struts.xml中配置
可以在:Libraries/Web App Libraries/struts2-core-2.3.37.jar/org.apache.struts2/default.properties中查看常量
常用常量:
配置Action访问的后缀:struts.action.extension=action,,
配置动态方法调用: struts.enable.DynamicMethodInvocation = true
配置国际化,解决POST请求乱码问题:struts.i18n.encoding=UTF-8
配置热加载配置文件:struts.devMode=true
在struts.xml中配置常量:<constant name="struts.action.extension" value="action,,"></constant>
name:常量名
value:常量值
在web.xml中配置常量
<context-param> <param-name>struts.i18n.encoding</param-name> <param-value>UTF-8</param-value> </context-param>
8、struts2动态方法调用
方式一、
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
访问:http://localhost:8080/Struts2_day01/Hello/Hello!add
方式二、(推荐)
<package name="demo" extends="struts-default" namespace="/Hello"> <action name="hello_*" class="Struts01.HelloAction" method="{1}" > <result name="success">/HelloAction.jsp</result> </action> </package>
在HelloAction中添加add方法
访问:http://localhost:8080/Struts2_day01/Hello/Hello_add
9、sturts2引入其他配置文件
<include file="strutsDemo/struts.xml"></include>
10、Action的3种创建方式
方式一、直接创建类,可以使POJO(一般java类,不去继承任何父类,也不实现任何借口) 使struts2框架的代码侵入性更低 方式二、实现接口 Action(xwork2的包) 里面有execute方法,提供action方法规范 Action接口中预置了一些字符串,可以在返回结果时使用 public class Demo1 implements Action { @Override public String execute() throws Exception { // TODO Auto-generated method stub return null; } } 方式三、继承ActionSupport(常用方法) //帮我们实现了许多接口 //如果需要用到这些接口的实现时,不需要自己来实现了 import com.opensymphony.xwork2.ActionSupport; public class Demo2 extends ActionSupport { }