Struts2基本介绍和用法

什么是Struts2

struts2并不是struts的2代,它是由WebWork发展而来,它不同struts用ActionServlet拦截请求,而是通过StrutsPrepareFilter过滤器拦截

Struts2的请求流程

1.用户发送一个request请求,被StrutsPrepareFilter过滤器拦截
2.核心控制器StrutsPrepareFilter通过配置文件struts.xml,找到对应的Action的方法
3.Action根据配置文件struts.xml找到对应的方法进行逻辑处理
4.Action返回一个String,根据struts.xml配置文件result返回(Action返回String所对应的result)对应的JSP视图

怎么使用

1.配置web.xml
2.5版本后用org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
2.5之前用org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

<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>*.action</url-pattern>
  </filter-mapping>

2.配置struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
    <package name="default" namespace="/com" extends="struts-default">
            <action name="struts2domain" class="com.crc.action.test" method="save">
                <result name="success">/index.jsp</result>
            </action>
    </package>
</struts>    

Struts2中用包的概念来管理Action,在实际应用中,我们应该把相同
业务的Action放在同一个包的中
需要注意的是,配置包必须指定name属性,该属性可以任意取值,但必须唯一,包的namespace用来定义命名空间,命名空间为该包访问访问Action路径一部分,例如上面访问struts2domain,访问路径为/com/struts2domain.action,namespace可不配置,为“/”
通常每个包都继承struts-default,因为struts2很多核心功能都是拦截器实现请求中,如从请求中把请求参数封装到action/文件上传和数据验证等都是通过拦截器实现,struts-default定义了这些拦截器和result类型,所以说,当包继承了struts-default才能使用struts2的核心功能,struts-default包是在struts2-core-2.jar文件中的struts-default.xml中定义,也是struts2的默认配置文件,struts2每次都会自动加载struts-default.xml文件
下面通过一个简单例子用struts2调用action
action代码如下

public class test {
    public test() {
        // TODO Auto-generated constructor stub
    }
    public String save(){
        System.out.println("调用成功");
        return "success";
    }
}

整体来说浏览器输入的地址是在struts.xml中定义的/命名空间/action name,根据这个配置文件会找到要调用哪个action的哪个方法,然后通过action返回的String,判断哪个result符合,然后返回对应的JSP视图
上面例子浏览器输入http://localhost:8080/struts2test/com/struts2domain.action就可以成功返回定义的页面

猜你喜欢

转载自blog.csdn.net/qq_29485643/article/details/81612364