Struts2上课笔记

原创 2016年05月30日 23:07:12
上课笔记:
笔记扩展:

Forward 和 Redirect的区别


简单的说Forward是发生在服务器内部,客户端不知道发生了request的转向。客户A向服务器B请求,服务器B处理完请求并发生forward转向,请求不会经过客户端,而是在内部请求另外一个服务器资源。对于客户A来说,该操作是透明的。

Redirect则是客户端A向B请求后,服务器B处理完请求结果,并把结果返回值客户端A,并要求客户端A向服务器C发出请求。对于客户端A来说,其实是发生了两次请求。一个重要的区别还在于,Redirect会重新发起请求,所以会丢失请求参数,请求属性,Action实例和Action中封装的属性。


一,result可以继续转发或者重定向一个action(一个java文件,class文件+)

       result的type结果类型:redirectAction
        redirectAction结果类型,注意的是redirectAction在浏览器中输入如:
        调转之后的页面的url地址栏上的是:
        下面的2个action为例子,第一个对应的servlet是LoginAction.java,其中有一个方法
        execute(),返回值是:success
        1.最重要的一点把这个action中的result的name设置为success,type="redirectAction"
        2.在param中name="actionName",这是必须的,然后在param标签中设置这个namespace
        3.这个namespace的内容就是你需要“转发”的请求目的地

            <action name="LoginAction" method="execute" class="com.li.LoginAction">
                <result name="success" type="redirectAction">
                        <param name="actionName">SecondAction</param>
                </result>
         </action>

        <action name="SecondAction" class="com.li.SecondAction" method="execute">
            <result name="success">/test2.jsp</result>
        </action>
        
二,action链

<!--下面举个简单例子来说明下这个action链式处理结果:写2个package,第一个写要写好namespace
,第二个package我没写namespace(其实也可写)-->
         <package name="er" extends="struts-default" namespace="/er">
                        //为了方便讲解,这里我用双//解释,当然你在Struts.xml中要用<!--  -->这样来注释
                        //注意在在这里name=“input-form”,我用了默认的class,默认的方法,当然这样
                      //之后这个action的结果result我用name="success",转发到/WEB-INF/pages/form.jsp
                    <action name="input-form">
                             <result name="success">/WEB-INF/pages/form.jsp</result>
                     </action>
          </package>
                    //再看第二个package,首先把action的路径和方法出在com.li.sqlQueryAction(sqlQueryAction.java)
                    //sqlQueryAction.java中有一个方法:save,方法的返回值:success
                    //看  <result name="success" type="chain">type类型是chain,那么接下来简单了
                    //二个param。一个设置name="actionName",param标签对内容是上一个package中action的input-                                                 //input-form      
                    //   第二个param设置就是刚才要求第一个package中name要写的namespace ,暂时理解则么多了0-0                                                    
           <package name="myapp" extends="struts-default">
                    <action name="sqlQuery" class="com.li.sqlQueryAction" method="save">
                          <result name="success" type="chain">
                                <param name="actionName">input-form</param>
                                <param name="namespace">/er</param>
                          </result>
                     </action>
            </package>
三,动态结果
     这个动态结果首先明白这个含义:指的是在指定实际视图资源使用了表达式语法,通过这样的语法可以让action
    处理完请求之后,动态的转入实际的视图资源。看下面的例子
    我这里先写3个jsp页面:
   //页面1
    <body>
         <a href="Second1_test">Second_execute request</a><br>
    </body>
    //页面2
    <body>
         <p>test2 哈哈</p> 
     </body>
    //页面3
      <body>
           execute 啊啊啊啊啊 <br>
     </body>
    接下来配置struts.xml
    <package name="er" extends="struts-default" namespace="/">
                //注意这里的_*号的含义,当有一个请求是以Second1_开头的请求action模式情况下
                //都将进行处理(前提交条件是有这个servlet)。这里我模拟Second1_test
             //将这个请求发送到SecondAction.java后,method="{1}"会与test方法对应
            //然后有2个结果之一出现,执行转发2或者3页面
           //注意{1}.jsp,这个{1}就是test
            <action name="Second1_*" class="com.li.SecondAction" method="{1}">
            <result name="input">/test2.jsp</result>
            <result name="success">/{1}.jsp</result>
        </action>
    <package/>
    我在com.li包下写SecondAction.java文件,在这个类中有一个方法test(注意这里的test与页面1中href=“Second1_test”中的test对应
   public class SecondAction 
{
    public String test()
    {
        //使用随机数测试结果返回值为:success或者input
        double i = Math.random();
        if(i<0.5)
        {
            System.out.println("i="+i);
            return "success";
        }
        else
        {
            System.out.println("i="+i);
            return "input";    
        }
    }
}
四,全局结果
<global-results>
            <!-- 全局的result对所有的action都起作用 -->
            <result name="index">/index.jsp</result>
</global-results>

版权声明:本文为博主原创文章,未经博主允许不得转载。

Struts2的国际化与上课总结

今天主要学习的struts2的国际化,国际化其实让我来说就是为了方便不同的人群所写的一个共同的程序,里面可以包括不同的语言,不同的提示信息,今天把国际化的知识讲完了,感觉还可以,上课的时候做了两个实例...

Struts2 上课ppt教程

  • 2017年11月20日 15:04
  • 1.36MB
  • 下载

java struts2上课源码2

  • 2010年06月28日 15:44
  • 2.21MB
  • 下载

毕向东java上课笔记ArrayListTest2

class Person { private String name; private int age; Person(String name,int age) { ...

struts2马士兵笔记

Struts2 学习笔记 ---wjt276       [二○一○年一月五日 完]   ...

黑马程序员Struts2笔记

  • 2017年11月28日 16:26
  • 932KB
  • 下载

Struts2学习笔记

  • 2017年11月02日 20:27
  • 257KB
  • 下载

Struts2.x 学习笔记 之 文件上传和下载

前言:为了能上传文件,必须将表单的method设置为POST,将enctype设置为multipart/form-data(此时浏览器将采用二进制流的方式来处理表单数据),只有在这种情况下,浏览器才会...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Struts2上课笔记
举报原因:
原因补充:

(最多只允许输入30个字)