• Struts2的使用


    Struts2的核心类库
    名称    说明
    Struts2-core-2.3.4.jar    核心类库
    Xwork-core-2.3.4.jar    Xwork的核心类库
    Ognl-3.0.5.jar    Ognl表达式语言类库
    Freemarker-2.3.19.jar    Freemarker模板语言支持类库
    Commons-io-2.0.1.jar    处理IO操作的工作类库
    Commons-fileupload-1.2.2.jar    文件上传类库
    Javassist-3.11.0.GA.jar    分析、编辑和创建java字节码的类库
    Asm-commons-3.3.jar    Asm是一个java字节码处理框架,使用它可以动态生成stub类和proxy类,在java虚拟机装载类之前动态修改类的内容
    Asm-3.3.jar    
    Commons-lang-3.3.1.jar    包含了一些数据类型工具类,是java.lang.*的扩展
    注意:因为Struts的版本号不一样所以jar包最好的数字是版本号信息。
    搭建Struts2
    1、将需要的jar包都添加到项目类库中。
    2、在项目的web.xml中配置struts2的拦截器信息。
      <!-- 配置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>
    
    3、配置struts2的struts.xml文件。Struts.xml文件是必须要放在src目录下的,也就是必须跟类放在一起。
    struts.xml文件错误。这种错误又分为以下几种:1,struts.xml文件名错误。一定要注意拼写问题;2,struts.xml文件放置路径错误。一定要将此文件放置在src目录下。编译成功后,要确认是否编译到classes目录中;3,struts.xml文件内容错误。下面给出一个正确的struts.xml文件以供参考。
    <?xml version="1.0" encoding="UTF-8" ?>
    
    <!DOCTYPE struts PUBLIC
            "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
            "http://struts.apache.org/dtds/struts-2.5.dtd">
    
    
    <struts>
        <package name="mypackage" extends="struts-default" >
           <action name="first">
           <result>/first.jsp</result>
           </action>
        </package>
    </struts>
    
    Action对象
    Action对象是Struts2框架中的重要对象,主要用于处理Http请求。
    Action接口中包含5个静态常量:
    SUCCESS代表Action执行成功返回的值,返回页面。
    NONE代表Action执行成功,但不返回页面。
    ERROR代表Action执行失败,返回的值。
    INPUT代表action需要某个输入信息页面的返回值。
    LOGIN代表需要用户登录的返回值。
    Action的基本流程
    Struts2框架主要通过Struts2的过滤对象拦截HTTP请求,然后将请求分配给指定的Action处理。
    
    动态Action
    创建UserAction类继承ActionSupport。
    import com.opensymphony.xwork2.ActionSupport;
    
    public class UserAction extends ActionSupport {
        public String add() throws Exception{
            
            return "add";
        }
        public String update() throws Exception{
            
            return "update";
        }
    }
    
    配置struts.xml文件。
    <?xml version="1.0" encoding="UTF-8" ?>
    
    <!DOCTYPE struts PUBLIC
            "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
            "http://struts.apache.org/dtds/struts-2.5.dtd">
    
    <struts>
    <!-- 配置Struts支持动态Action, 必须存在 -->
    <constant name="struts.enable.DynamicMethodInvocation" value="true" /> 
    <!-- strict-method-invocation在2.5版本,为了限制DMI,默认启用了严格的方法访问,不想启用要改为false,如果启用严格访问模式,无法实现动态Action -->
        <package name="mypackage" extends="struts-default" strict-method-invocation="false">  
           <action name="user" class="com.wgh.UserAction">
           <result name="add">first.jsp</result>
           <result name="update">update.jsp</result>
           </action>
        
        </package>
        
    </struts>
    添加页面访问链接
    <a href="user!add">添加用户</a>
    <a href="user!update">修改用户</a>
    
    Struts2的配置文件
    名称    说明
    Struts-default.xml    位于Struts2-core-2.3.4.jar文件的org.apache.Struts2包中
    Struts-plugin.xml    位于Struts2提供的各个插件包
    Struts.xml    Web应用默认的Struts2配置文件
    Struts.properties    Struts2框架中属性配置文件
    Web.xml    此文件是Web应用中的web.xml文件,在其中也可以设置Struts2框架的一些信息。
    
    <package>标签
    配置好的Package可以被其他package继承。提高了配置文件的重用性。
    包的属性如下:
    属性    说明
    Name    声明包的名称,以方便在其他地方引用,属性必须
    Extends    用于声明继承的包,即其父包
    namespace    指定命名空间,即访问此包下的action需要访问的路径
    Abstract    将包声明为抽象类型(包中不饱和action)
    
        <package name="mypackage" namespace="/abc" extends="struts-default" strict-method-invocation="false">  
           <action name="user" class="com.wgh.UserAction">
           <result name="add">first.jsp</result>
           <result name="update">update.jsp</result>
           </action>
        
        </package>
    
    访问路径
    <a href="abc/user!add">添加用户</a>
    <a href="abc/user!update">修改用户</a>
    注意包设置了命名空间后,必须创建命名空间的文件夹(位于WebContent下),将访问的页面放在与命名空间对应的文件夹中。
    
    <action>相关配置
    相关属性
    属性    说明
    Name    用于配置Action对象被请求的url映射
    Class    指定Action对应的类名
    Method    设置请求Action对象时调用该对象的哪个方法
    Converter    指定Action对象类型转换器类
    
    使用通配符简化配置
    *:匹配0个或多个字符。
    :转义字符,如需要a者输入“a”。
    Class属性获取通配符,使用{1},{2},{3}…等方式获取
         <action name="*" class="com.wgh.{1}">
           <result name="add">first.jsp</result>
           <result name="update">update.jsp</result>
           </action>
    
    Action配置访问结果的响应<result>
    属性就一个name,默认“success”。根据访问action配置类的方法返回的字符匹配name,跳转到对应的页面。
    
    Struts2的开发模式
    Struts2提供了Map类型的request、session、application,可以通过ActionContext对象中获得。该对象位于com.opensymphony.xwork2包中。
    
    1、    实例化ActionContext
     public  static  ActionContext   getContext();
    2、    获取Map类型的request
    ActionContext对象提供的get方法
    Public  Object get(Object obj)
    实际应用
    Map  request=ActionContext.getContext.get(“request”);
    3、    获取Map类型的request
    直接访问getSession()方法。
    Public Map  getSession();
    4、    获取Map类型的application
    直接使用getApplication()方法获取。
    Public  Map  getApplication();
    
    域模型DomainModel
    通过访问Action类直接方法Action类中的对象信息。
        private User user;
        
        public String add() throws Exception{
            
            return "add";
        }
        
        public User getUser() {
            return user;
        }
        public void setUser(User user) {
            this.user = user;
        }
        
        public String update() throws Exception{
            
            return "update";
        }
    
    使用struts标签必须添加引用代码,放置文件的最上方。
    <%@taglib  prefix="s" uri="/struts-tags" %>
    
    
    <s:form action="abc/UserAction!add" method="post">
    <s:textfield name="user.name" label="用户名"></s:textfield>
    <s:radio name="user.sex" list="#{1:'男',0:'女'}" label="性别"></s:radio>
    <s:submit value="提交"></s:submit>
    </s:form>
    
    驱动模型更加简洁但需要继承接口ModelDriven。
    
    package com.wgh;
    
    import com.opensymphony.xwork2.ActionSupport;
    import com.opensymphony.xwork2.ModelDriven;
    
    public class UserAction extends ActionSupport implements ModelDriven<User> {
    
        private User user=new User();
        
        public String add() throws Exception{
            
            return "add";
        }
    
        public String update() throws Exception{
            
            return "update";
        }
        
        
    
        @Override
        public User getModel() {
            // TODO Auto-generated method stub
            return this.user;
        }
    }
    这样jsp页面就可以写成一下形势
    
    <s:form action="abc/UserAction!add" method="post">
    <s:textfield name="name" label="用户名"></s:textfield>
    <s:radio name="sex" list="#{1:'男',0:'女'}" label="性别"></s:radio>
    <s:submit value="提交"></s:submit>
    </s:form>
  • 相关阅读:
    VS_VERSION_INFO
    ocx中调用ocx
    MFC注册窗口类以及FindWindow按窗口类名查询(避免用#32770获取窗口句柄)
    VS2010制作dll
    CComboBox自动匹配
    ado连接mysql和ORACLE
    正则表达式
    ocx 中使用CImage和CComPtr
    VC ADO “ParameterDirectionEnum”:“enum” 类型等 重定义问题 解决方案
    VC使用ADO连接远程oracle数据库
  • 原文地址:https://www.cnblogs.com/gynbk/p/6556321.html
Copyright © 2020-2023  润新知