• 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"/>

  • 相关阅读:
    mac访达中的位置
    ResponseEntity和@ResponseBody以及@ResponseStatus区别
    Spring Boot中进行Junit测试
    添加数据库时出现time zone无法识别问题
    HTTPS
    表达式求值
    《进击JavaScript核心》学习笔记
    GitLab领取任务+建立分支+本地修改+上传分支+合并分支详细步骤
    黑苹果使用感受和常见问题注意事项!
    JS进阶练习
  • 原文地址:https://www.cnblogs.com/h-g-f-s123/p/6349784.html
Copyright © 2020-2023  润新知