struts

注意:(1)框架的版本号(2)jar包的引用是否正确

一、

  struts:  是mvc模式的一个框架,其实也是servlet的封装,提高开发效率。

  框架:   软件中的框架就是一种半成品,我们的项目在框架的基础上进行开发;框架已经实现了一些功能,这样提高了开发效率。

  struts2 是在 struts 1和WebWork的技术基础上进行了合并的全新的框架。

  Struts2预先实现的功能:(1)请求数据自动封装

              (2)文件上传

              (3)国际化功能的简化

              (4)数据校验功能    。。。。。。等等

二、开发流程

(1)新建web工程

(2)引入jar文件

    commons-fileupload-1.2.2.jar   【文件上传相关包】

    commons-io-2.0.1.jar

    struts2-core-2.3.4.1.jar           【struts2核心功能包】

    xwork-core-2.3.4.1.jar             【Xwork核心包】

    ognl-3.0.5.jar                         【Ognl表达式功能支持表】

    commons-lang3-3.1.jar           【struts对java.lang包的扩展】

    freemarker-2.3.19.jar              【struts的标签模板库jar文件】

    javassist-3.11.0.GA.jar            【struts对字节码的处理相关jar】

(3)配置web.xml

  Struts的核心功能的初始化,通过过滤器完成

    <!-- 配置struts2核心过滤器 -->
  <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>

  StrutsPrepareAndExecuteFilter  即为核心过滤器

注意:

 使用的struts的版本不同,核心过滤器类是不一样的!

(4)开发action并配置struts.xml

    1、action类,也叫做动作类。一般继承ActionSupport类,即处理请求的类  (struts中的action类取代之前的servlet)。

    2、action中的业务方法,处理具体的请求

             - 必须返回String

             - 方法不能有参数

public class HelloAction extends ActionSupport{
    public String execute() {
        System.out.println("action被执行");
        return "success";
    }
}

配置struts.xml文件:

   最外面是<struts>。

   <package>的name可以随意写,但是每个package的name必须唯一;extends="struts-default"。

   <action>中的name对应请求的uri,class的值对应类,method为调用该类的哪个方法并返回字符串,根据返回的字符串与<result>的name属性值比较,如果一样则调用该视图。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
          "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <package name="first" extends="struts-default">
        <action name="hello" class="cn.itcast.action.HelloAction" method="execute">
            <result name="success">/success.jsp</result>
        </action>
    </package> 
</struts>

 浏览器中的请求路径:http://localhost:8080/mystruts/hello,若没有出来想要的结果,经过检查代码也正确,则把项目remove掉,重新发布。

 三、拦截器

  拦截器功能与过滤器功能类似。

         区别:

                   共同点: 都拦截资源!

                   区别:

                            过滤器,拦截器所有资源都可以;  (/index.jsp/servlet/img/css/js)

                            拦截器,只拦截action请求。

                            拦截器是struts的概念,只能在struts中用。

                            过滤器是servlet的概念,可以在struts项目、servlet项目用。

四、struts-defaults.xml的详解

  目录:struts2-core-2.3.4.1.jar/ 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" />

 <interceptor name="prepare" class="com.opensymphony.xwork2.interceptor.PrepareInterceptor"/>

<interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>

原文地址:https://www.cnblogs.com/h-g-f-s123/p/6349784.html