• Struts2基本使用(二)--配置文件简述


    配置文件简述

      引入Struts2框架之后项目中多了一个struts.xml,以及web.xml也多了一些代码

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

      这些代码表示了Struts2将要拦截什么类型的请求,以及该怎么处理这些请求。<filter-name>标签就是连接<url-pattern>和<filter-class>的一个桥梁,所以我们可以把上面的代码理解为:Struts2将要拦截所有以.action为结尾的请求,然后将这些请求交由Struts2内部来进行处理(请求按照struts.xml的配置执行对应的Java类)。

      struts.xml主要就是配置请求和Java类的一个映射关系以及一些拦截器其基本结构如下:

    <struts>
        <package>
            <action>
                <result></result>
             </action>
        </package>
    </struts> 

      根据上面的定义结构我们可以得出,Struts2通过包来管理Action。  

      在配置package时必须指定它的name属性,name属性是引用该包的唯一标识,另外还有一个常用的属性就是extends,该属性是一个可选属性,表示当前包继承了哪个包,继承之后将拥有父包里面的action和拦截器的定义,通常我们在使用时都是继承struts-default。

      action是我们配置struts.xml的核心部分,它的配置将决定我们前台发送且被拦截的请求交由哪个Java类里面的哪个方法来进行处理。action配置有不同的配置方法,这里只介绍一个目前最优的一种方法,action在配置时设置一个name属性以及一个class属性。name属性对应我们发送的请求,class属性对应Java类的地址。

      result的主要就是配置Java类处理完成之后返回的结果和页面之间的一个映射。

      Struts2在配置完成以后我们可以使用一种默认的请求模式就是*!*.action,第一个*和action配置中的name相互对应,第二个*和Java类里面的具体的方法进行对应。

      至此我们可以配置出一个完整的struts.xml文件了,如下:

    <struts>
        <package name="demo" extends="struts-default">
            <action name="demo" class="demo.controller.HandlerAction">
                <result name="success">success.jsp</result>
                <result name="fail">fail.jsp</result>
             </action>
        </package>
    </struts> 

      我们已经知道Struts2在配置完成以后可以使用一种默认的请求模式,就是*!*.action,假如我们前台界面的一个请求为demo!register.action,!左边的内容和<action>中的name互相对应,对应的结果为将这个请求交给demo.controller.HandlerAction这个Java类进行处理,!右边的内容对应demo.controller.HandlerAction类里面的一个同名的方法就是register方法。

    一个完整的小示例

      1.新建一个web项目,引入Struts2框架

      2.在src目录下新建一个包Demo.Action

      3.在包下新建一个Java类HandlerAction

      4.准备两个页面分别为success.jsp,error.jsp分别提示成功还是失败

      5.编写struts.xml配置文件

      6.编写index.jsp页面

      struts.xml配置文件如下:

    <struts>
        <package name="demo" extends="struts-default">
            <action name="demo" class="Demo.Action.HandlerAction">
                <result name="success">success.jsp</result>
                <result name="error">error.jsp</result>
            </action>
        </package>
    </struts> 

      handlerAction.java如下:

    package Demo.Action;
    
    public class HandlerAction {
        private String username;
        private String password;
        public String register() throws Exception{
            try {
                System.out.println(username);
                System.out.println(password);
                return "success";
            } catch (Exception e) {
                return "error";
            }
        }
        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
    
    }

      index.jsp如下:

        <form method="post" action="demo!register.action">
            <label>用户名:</label><input type="text" name="username"><br/>
            <label>密码:</label><input type="password" name="password"><br/>
            <input type="submit" value="注册">
        </form>

      Demo地址

      在回顾一下Strut2的一个处理流程

      首先在web.xml中定义一个拦截器,指定了所有以.action结尾的请求交给Struts2来进行处理,struts.xml中的action会根据页面的请求为该请求指派一个Java类来进行处理,在处理成功后返回一个"success"

    表示,该标识由result为其映射一个页面,然后展现给用户。

  • 相关阅读:
    leetcode 5286 网格中的最短路径
    C++ STL
    Transformer解读
    global_steps
    tensorflow中的一些语法问题
    生成器与yield关键字
    CNN神经网络一维卷积和二维卷积
    electron-builder打包后,运行的程序左上角图标不显示,桌面和状态栏的显示正常,是什么情况。
    git慢设置代理
    js使用正则表达式获取字符串中特定的字符
  • 原文地址:https://www.cnblogs.com/shinhwazt/p/5914608.html
Copyright © 2020-2023  润新知