zoukankan      html  css  js  c++  java
  • Struts2学习笔记二:开发流程

    一:创建项目,添加依赖包

    二:在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>/*</url-pattern>
     </filter-mapping>

    三:创建action

    class XXAction extends ActionSupport//继承ActionSupport定义action
    {
       定义全局属性;//请求传进来时会自动把同名的参数值注入全局属性变量中
       
       定义处理方法;
    
       重写父类提供的默认方法;//主要有两个:execute()和validate()

    return "结果"; }

    四:创建拦截器

    五:配置struts.xml

    1:配置常量

    2:引入其他模块配置的xml

    3:定义package

      3.1)注册拦截器

      3.2)配置默认拦截器、全局result

      3.3)注册action:配置method、引用拦截器、配置结果集、默认参数值

    <?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>
       <!--配置Structs2自身选项:常量配置-->
        <constant name="struts.action.extension" value="action,do,..." />//后缀名配置,什么后缀名的请求交给structs2处理
        <!-- 是否启用开发模式 -->
        <constant name="struts.devMode" value="true" />
        <!-- struts配置文件改动后,是否重新加载 -->
        <constant name="struts.configuration.xml.reload" value="true" />
        <!-- 设置浏览器是否缓存静态内容 -->
        <constant name="struts.serve.static.browserCache" value="false" />
        <!-- 请求参数的编码方式 -->
        <constant name="struts.i18n.encoding" value="utf-8" />
        <!-- 每次HTTP请求系统都重新加载资源文件,有助于开发 -->
        <constant name="struts.i18n.reload" value="true" />
        <!-- 文件上传最大值 -->
        <constant name="struts.multipart.maxSize" value="104857600" />
        <!-- 让struts2支持动态方法调用 -->
        <constant name="struts.enable.DynamicMethodInvocation" value="true" />//开启感叹号形式的action方法调用
        <!-- Action名称中是否还是用斜线 -->
        <constant name="struts.enable.SlashesInActionNames" value="false" />
        <!-- 允许标签中使用表达式语法 -->
        <constant name="struts.tag.altSyntax" value="true" />
        <!-- 对于WebLogic,Orion,OC4J此属性应该设置成true -->
        <constant name="struts.dispatcher.parametersWorkaround" value="false" />
    
      
        <include file="struts-default.xml"></include>//组件化开发使用该标签:可以针对不同模块的请求处理定义成不同xml,引入structs.xml即可。注意文件头同strcuts.xml
        
        
        <!-- package提供了将多个Action组织为一个模块的方式
            package的名字必须是唯一的 package可以扩展 当一个package扩展自
            另一个package时该package会在本身配置的基础上加入扩展的package
            的配置 父package必须在子package前配置 
            name:package名称
            extends:继承的父package名称
            abstract:设置package的属性为抽象的 抽象的package不能定义action 值true:false
            namespace:定义package命名空间 该命名空间影响到url的地址,例如此命名空间为/test那么访问是的地址为http://localhost:8080/struts2/test/XX.action
         -->
        <package name="com.kay.struts2" extends="struts-default" namespace="/test">

    <!--注册拦截器--> <interceptors> <interceptor name="timer" class="com.kay.timer"></interceptor> <interceptor name="logger" class="com.kay.logger"></interceptor> <!-- 定义拦截器栈 --> <interceptor-stack name="mystack"> <interceptor-ref name="timer"></interceptor-ref> <interceptor-ref name="logger"></interceptor-ref> </interceptor-stack> </interceptors> <!-- 定义默认的拦截器 每个Action都会自动引用 如果Action中引用了其它的拦截器 默认的拦截器将无效 --> <default-interceptor-ref name="mystack"></default-interceptor-ref> <!-- 全局results配置:每个action都可以使用--> <global-results> <result name="input">/error.jsp</result> </global-results> <!-- Action配置--> <action name="hello" class="com.kay.struts2.Action.LoginAction" method="调用action的哪个方法进行请求处理,不配置则默认调用execute方法"> <interceptor-ref name="timer"></interceptor-ref>//把注册的拦截器作用到该action上 <result name="success" type="dispatcher">/talk.jsp</result>//配置结果跳转 <param name="url">http://www.sina.com</param>//配置action中某全局变量的默认初始值,action中变量需要定义好setter/getter方法 </action> </package> </struts>

    六:在页面端通过action的url来发送请求

  • 相关阅读:
    css将元素float和textalign方向一致时
    Asp.Net细节性问题技巧精萃
    ajax单个元素中实现多个回调函数
    javascript实现Observer模式来管理多个事件回调
    管闲事的小明
    字符串扩展
    (转的)计算组合数——整数拆分
    数学题杭电1002A+B。。。交了七遍,五遍竟然是没删除测试时候的输出= =。。。。
    快速排序。。。注意快速排序不适宜解决有重复数据的排序
    哈希查找统计元音
  • 原文地址:https://www.cnblogs.com/ygj0930/p/6807546.html
Copyright © 2011-2022 走看看