Struts2入门01

一、搭建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 {

}
原文地址:https://www.cnblogs.com/harriets-zhang/p/13433681.html