Struts2简介第一个Struts2Demo(一)

来源:互联网 发布:php制作动态网页作品 编辑:程序博客网 时间:2024/06/06 01:03

struts是Servlet封装,目的是为了提高开发效率

1. Struts开发步骤

1、 web项目引入Struts-jar包(核心包有8个fileupload/io/lang3/freemarker/javassist/ognl/struts2-core/xwork-core)
2、 web.xml中,引入Struts的核心功能,配置过滤器
3、 开发action
4、 配置action,在src/struts.xml中配置(struts.xml可以在Struts源码中找到)

Demo HelloStruts

引jar包,在web.xml中配置Struts2核心过滤器
web.xml

 <!-- 引入Struts核心过滤器 -->  <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>

action开发,用一个普通类继承ActionSupport

/** * 开发Action 处理请求 * @author wsk * */public class HelloAction extends ActionSupport{    public HelloAction(){        System.out.println("创建HelloAction");    }    public String execute() throws Exception {        System.out.println("访问到了HelloAction。。正在处理请求");        System.out.println("调用Servlet");        return "success";    }}

配置文件struts.xml

<!-- package 包配置:通常一个业务模板用一个包    name 包的名字,包名不能重复    extends 当前包继承自哪个包        在Struts中所有包一定要继承struts-default        struts-default在struts-default.xml中     abstract 表示当前包为一个抽象包,抽象包中action不能被访问    namespace  名称空间,默认为/,作为路径的一部分      访问路径=http://localhost:8088/项目/名称空间/actionname     action  配置请求路径与Action类的映射关系         name 请求路径名称         class 请求处理的action类全名         method 请求处理的方法      result            name action处理方法返回值          type 跳转结果类型          --!> <package name="xxs" extends="struts-default">        <!-- 第一个helloworld action -->        <action name="hello" class="com.wsk.hello_struts.HelloAction" method="execute">            <result name="success">/hello.jsp</result>        </action> </package>

2. Struts2执行流程

服务器启动时:

1、加载项目web.xml
2、创建Struts2核心过滤器对象,StrutsPrepareAndExecuteFilter,并执行filter的init方法,加载相关配置文件。

struts-default.xml 核心功能的初始化
struts-plugin.xml Struts相关插件
struts.xml 用户编写配置文件

访问

3、用户访问Action,服务器根据访问路径名称,找对应的action配置,创建Action对象
4、后边每次访问都会创建Action实例

Struts-default.xml

内容:
1、bean节点指定Struts在运行的时候创建的对象类型
2、指定struts-default包 【用户写的package(struts.xml)一样要继承此包 】

package struts-default 包中定义了:

a. 跳转的结果类型

dispatcher    转发,不指定默认为转发redirect       重定向redirectAction  重定向到action资源stream        (文件下载的时候用)

b. 定义了所有的拦截器

定义了32个拦截器!
为了拦截器引用方便,可以通过定义栈的方式引用拦截器,此时如果引用了栈,栈中的拦截器都会被引用!
defaultStack 默认的栈,其中定义默认要执行的18个拦截器!

c. 默认执行的拦截器栈、默认执行的action

<default-interceptor-ref name="defaultStack"/>               <default-class-ref class="com.opensymphony.xwork2.ActionSupport" />

拦截器和过滤器区别

拦截类型区别

拦截器是Struts2里边的,主要用于拦截Action资源的访问,只能在Struts中使用
过滤器是servlet中,可以拦截(.jsp/servlet/css/js/img)

创建执行时间区别

拦截器是在web服务器启动时创建过Struts核心滤器初始化时加载,在用户访问Action时调用
过滤器是web服务器启动时创建执行初始化方法init,在用户访问时调用doFilter方法执行,在web服务器关闭时销毁

原创粉丝点击