• Struts2


    惯例广告一发,对于初学真,真的很有用www.java1234.com,去试试吧!

    1、拷贝Struts2所属文件
         1.1struts.xml
         1.2lib jar包
         1.3web.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>
    
    2、HelloWorld
         2.1struts.xml
         <package name="default" namespace="/" extends="struts-default">
            <action name="hello">
                <result>
                     /Hello.jsp
                </result>
            </action>
         </package>
         
         2.2创建Hello.jsp
         <title>HelloStruts2</title>
         <body>
               Hello Struts2 <br>
         </body>
         
    3、开发模式struts.xml
         <constant name="struts.devMode" value="true" />
         constant常量
         value设置为true
    
    4、Struts流程
         浏览器-Web容器-Struts过滤器-Action-jsp-返回
         好处:请求与结果分开
    
    5、package
         解决命名冲突问题
    
    6、namespace
         namespace决定了action的访问路径,默认:“”,可以接收所有路径的action。
    
    7、class
         <action name="" class="">
         class:action对应的处理类
    
         public class name extends ActionSupport {
        
         @Override
         public String execute() {
              return "success";
         }     }
         extends ActionSupport需要继承ActionSupport
         execute()执行execute()方法
    
    8、路径问题
         struts2中的路径问题是根据action的路径而不是jsp路径来确定,不要用相对路径
         <%
        String path = request.getContextPath();
        String basePath = request.getScheme() + "://"
                + request.getServerName() + ":" + request.getServerPort()
                + path + "/";
         %>
         
         <base href="<%=basePath%>" />
    
    9、动态调用DMI
         一个action配置多个方法
         9.1.通过配置文件struts.xml中action的method属性指定调用方法,如:
            <action  method="调用方法名">;
         9.2在URL中动态指定调用方法,使用感叹号“!”将action名和调用方法名分割开,如:
            http://localhost:8080/Struts2_DMI/user!add
    
    10、通配符
         10.1约定优于配置
         10.2优先级精确大于通配,通配先后顺序匹配
    
         <package name="user" extends="struts-default" namespace="/">
              <action name="user_*" class="com.test.action.UserAction" method="{1}">
                    <result>/user_{1}.jsp</result>
              </action>
         </package>
         
         public class UserAction extends ActionSupport
    {
     public String add()
     {
      return SUCCESS;
     }
     public String delete()
     {
      return SUCCESS;
     }
     public String update()
     {
      return SUCCESS;
     }
     public String select()
     {
      return SUCCESS;
     }
    }
    
          <a href="user_add.action">添加页面</a><br>
          <a href="user_delete.action">删除页面</a><br>
    <a href="user_update.action">修改页面</a><br>
    <a href="user_select.action">查找页面</a><br>
    
    11、Struts配置文件
         struts2-core->org.apache.struts2->default.properties
         Struts默认编码uft-8
    
    12、简单验证addField
         addFieldError("","");添加错误信息
         <s:fielderror fieldName="" theme=""/>取得错误信息 theme主题可写可不写
         fieldErrors 验证属性的值
         actionErrors action错误
         引入标签<%@taglib url="/struts-tags" prefix="s" %>
         <s:debug></s:debug>debug
         <s:property value=""/>取value stackt和stack context属性的值
    
    13、访问web元素IOC控制反转方式
    
    14、包含模块
         <include file="">include包含相当于把文件复制
    
    15、DefaultAction
         默认Action主要处理访问页面不存在时。
    
    16、result结果类型
         16.1dispatcher默认结果类型,用来呈现JSP页面 服务器端跳转
         16.2redirect将用户重定向到一个已配置好的URL 客户端跳转
         16.3chain 将action和另外一个action链接起来 forword
         16.4redirectAction 将用户重定向到一个已定义好的action
    
    17、result跳转另一个包时
         <result type="chain">
              <param name="actionName"></param>
              <param name="namespace">/</param>
         </result>
    
    18、全局的<result>
         <global-results>
        <result name="error">/Error.jsp</result>
        <result name="invalid.token">/Error.jsp</result>
        <result name="login" type="redirectAction">Logon!input</result>
         </global-results>
         跨包引用extends
    
    19、动态结果集
          <!-- 表示往值栈里面取值 在该类中r是action的属性 而r是传入的数值所以是动态结果集 -->
          <result>${r}</result>
          public String execute() throws Exception {
               //根据传入数据动态决定跳转的jsp
               if(type == 1) r="/user_success.jsp";
               else if (type == 2) r="/user_error.jsp";
               return "success";
          }
    
    20、带参结果集
         <result type="redirect">/user_success.jsp?t=${type}</result>
         <s:property value="#parameters.t"/>(可以获取到值)
    
    21、struts OGNL对象图导航语言可以任意存取对象的属性或者调用对象的方法,能够遍历整个对象的结构图,实现对象属性类型的转换等功能。
         21.1访问值栈中的action的普通属性<s:property value="username"/>
         21.2访问值栈中action的普通方法<s:property value="m()" />
         21.3访问值栈中对象的普通属性(get set方法)<s:property value="user.age"/>只有传,才能构造
         21.4访问值栈中对象的普通方法<s:property value="password.length()"/>
         21.5访问静态方法<s:property value="@com.bjsxt.struts2.ognl.S@s()"/>前面@类名后面@静态方法名
         <constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>常量设置真静态方法才能访问到
         21.6访问静态属性:<s:property value="@com.bjsxt.struts2.ognl.S@STR"/>前面@类名后面@静态属性名
         21.7访问Math类的静态方法:<s:property value="@@max(2,3)" />      
         21.8访问普通类的构造方法:<s:property value="new com.bjsxt.struts2.ognl.User(8)"/>
         21.9访问List:<s:property value="users"/>
         21.10访问List中某个元素:<s:property value="users[1]"/>
         21.11访问List中元素某个属性的集合:<s:property value="users.{age}"/>
         21.12访问List中元素某个属性的集合中的特定值:<s:property value="users.{age}[0]"/> | <s:property value="users[0].age"/>
         21.13访问Set:<s:property value="dogs"/>
         21.14访问Set中某个元素:<s:property value="dogs[1]"/>没有顺序,取不到值
         21.15访问Map:<s:property value="dogMap"/>
         21.16访问Map中某个元素:<s:property value="dogMap.dog101"/> | <s:property value="dogMap['dog101']"/> | <s:property value="dogMap["dog101"]"/>
         21.17访问Map中所有的key:<s:property value="dogMap.keys"/>
         21.18访问Map中所有的value:<s:property value="dogMap.values"/>
         21.19访问容器的大小:<s:property value="dogMap.size()"/> | <s:property value="users.size"/>
         21.20投影(过滤):<s:property value="users.{?#this.age==1}[0]"/>this循环当中的每个对象
         21.21投影:<s:property value="users.{^#this.age>1}.{age}"/>
         21.22投影:<s:property value="users.{$#this.age>1}.{age}"/>
         21.23投影:<s:property value="users.{$#this.age>1}.{age} == null"/>
         21.24[]:<s:property value="[0].username"/>从第0个位置开始    
    
    22、标签
         22.1通用标签
              property获取数据值,并将数据值直接输出到页面中
              set用于定义一个变量,通过此标签可以为所定义的变量赋值,还可以设置变量的作用域(application、request、session)
              bean用于创建并实例化一个javabean对象,并可以通过param标签对其赋值
              include用于包含一个JSP页面或Servlet,只有一个属性value,必选属性。可以通过param传递参数
              param主要对参数赋值,也可以当作其他标签的子标签。
              debug
    
         22.2 控制标签
              ifelseifelse流程控制标签
              iterator迭代数据的标签
              subset从集合截取一段标签
    
         22.3UI标签
              theme主题 把所有主题定义为simple;fielderror特殊处理;自己控制其他标签的展现
    
    23、BBS准备(设计约定、编码规定)
         23.1库名:项目名
         23.2表名
              前缀:t_或_ 表名:驼峰标识和model一致
         23.3字段名
              字段名与属性名保持一致(尽量不要起名和数据库命名冲突)userId
         23.4包名
              建议用层来划分包com.163.model、action、service
         23.5Action
              Action以Action结尾
         23.6Dao
              Dao以Dao结尾
         23.7*-*.jsp
         23.8/
         23.9/admin
         23.10package *action *adminAction
    
    24、项目开发顺序
         24.1建立界面原型
         24.2建立struts.xml
              namespace
              package
              action
              result
              修改界面原型
              测试
         24.3建立数据库
         24.4建立model
         24.5建立service(juit测试)
         24.6开发
    
    25、声明式异常处理
         25.1在Action中进行导演映射
         25.2在package中进行全局异常映射
         25.3使用继承共用异常映射
         25.4Struts中异常处理由拦截器实现
    
    26、I18N
         26.1原理
              ResourceBundle和Locale的概念     
              资源文件
         26.2Struts的资源文件
              Action-Package-App级
              一般只用App
    
    27、Struts拦截器
         拦截器动态地作用于Action和Result之间。
    
    28、日期转换
         <s:data name="d" format="yyyy/MM/dd HH:mm:ss"/>format格式化日期的样式
  • 相关阅读:
    * 结束Activity
    进度条ProgressBar
    StackView实现叠加在一起的图片循环移动像循环队列一样
    AdapterViewFlipper功能 自动播放的图片库
    Spinner功能和用法
    SimpleAdapter 网络视图:带预览的图片浏览器
    AutoCompleteTextView
    Faster R-CNN
    Fast R-CNN
    100个大型机器学习数据集汇总(CV/NLP/音频方向)
  • 原文地址:https://www.cnblogs.com/cnmotive/p/3169037.html
Copyright © 2020-2023  润新知