zoukankan      html  css  js  c++  java
  • struts2学习笔记1

    1.struts.xml必须存放在src目录下,这样生成到tomcat中,才能位于classes目录下。
    2.web.xml中使用Struts2的配置(使用filter拦截器,拦截所有请求):
    <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
    url-pattern如果是“/*”,则form表单中的action=*.action,如<form action="Login.action"></form>
    如果使用的是struts表单form,这form中的action="Login",如<s:form action="Login"></s:form>
    3.在Action接口中,如果想要访问HttpSession对象,可以使用ActionContext.getContex().getSession()方法,不过该方法返回的是一个Map对象,Structs2的

    系列拦截器会将Map对象与HttpSession关联起来。

    public String execute()
        {
            if("lisi".equals(Name)&&"123456".equals(Password))
            {
                ActionContext.getContext().getSession().put("name", Name);
                ActionContext.getContext().getSession().put("password", Password);
                return SUCCESS;
            }
            else
            {
                return INPUT;
            }
        }

    其中ActionContext.getContext().getSession()得到的对象为Map<String,Object>

    几种获取Servlet API的方法:

    (1)使用ActionContext类。

    (2)继承ServletContextAware ---获取WebContext对象。

      继承ServletResponseAware --获取HttpServletResponse对象。

      继承ServletRequestAware --获取HttpServletRequest对象。

    (3)使用ServletActionContext类的静态方法,获取PageContext,HttpServletRequest,HttpServletResponse,ServletContext对象。

    4.struts2中的valueStack是放在request对象中的,如可以使用ValueStack vs=(ValueStack)request.getAttribute("struts.valueStack")获得ValueStack对象。

    • 利用脚本获取传入值:

    在struts2中action传递给jsp中的数据是保存在OgnlValueStack中的,所以在jsp页面中如果想利用脚本而不是sturts标签获取传入值的话,尽量使用OgnlValueStack的值获得,例如:

    <%...OgnlValueStack stack = (OgnlValueStack) request.getAttribute("struts.valueStack");

    Article article = (Article)(stack.findValue("article"));%> 

    • sturts2标签自动转换Html标签

      在使用struts2标签<s:property value="">来显示传递值的时候,会将字符串中的html标签转换,所以可以利用java脚本直接获取传入值,使用方式见第一条

    5. FilterDispatcher是Struts2框架的核心控制器,该控制器作为一个Filter运行在Web应用中,它负责拦截所有的用户请求,当用户请求到达时,该Filter会过滤用户请求。如果用户请求一action结尾,该请求将被转入Struts2框架处理。

      Struts2框架提供了系列拦截器,该系列拦截器负责将HttpRequest请求中的参数解析出来,传入到Action中,并回调Action的execute()方法来处理用户请求。

    6.如果配置<result />结果时没有使用location参数,则系统会把<result>..</result>之间的字符串作为location值。如果result中没有指定type类型,则系统会使用默认的type值:dispatcher(jsp视图),如果没有指定name值,则默认的name为success。

     7.全局结果:<result/>结果放在了<global-result />元素中。

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "struts-2.1.dtd" >
    <struts>
        <package name="struts2" extends="struts-default">
            <global-results>
                <result>${target}.jsp</result>
            </global-results>
            <action name="Login" class="com.demo.action.LoginAction">
                <result name="login">/index.jsp</result>
                <result name="register">/Register.jsp</result>
            </action>
        </package>
    </struts>

    如果一个Action中的result值与global-result中的result值一样,则Action中的结果会覆盖全局的结果,请求会访问Action中result对应的视图结果。只有当在Action中找不到相应的result值,才会使用全局result。

  • 相关阅读:
    PHP实现4种排序算法
    PHP反射获取当前函数的内容
    PHP递归目录的5种方法
    生成随机数组
    empty、isset、is_null的比较
    PHP哈希表碰撞攻击
    XMLHttpRequest的跨域请求
    CI框架SESSION重写
    PHP开发第一个扩展
    PHP面试题集之基础题
  • 原文地址:https://www.cnblogs.com/limingluzhu/p/2679431.html
Copyright © 2011-2022 走看看