当前位置: 代码迷 >> Web前端 >> 11级_Java_曹筑波 02.27 Struts2_第二天
  详细解决方案

11级_Java_曹筑波 02.27 Struts2_第二天

热度:106   发布时间:2013-02-28 11:33:09.0
11级_Java_曹建波 02.27 Struts2_第二天

完成上次课的练习

  主要整合Hibernate技术

分析的servlet

   客户端--->web容器-->web.xml -->servlet来处理 ----->model-->数据库

     <--------------------------------|

request.setAttribute(“username”,username);

//转发

request.getDis(“manager/index.jps”).forward(request,response);

       ---jsp页面中  ${username}

//重定向

response.sendRiedirect();

分析 struts2

客户端----->web容器--->web.xml-->struts2过滤器--->struts.xml--->Action--->model--->数据库

 <------------------------------------------------|

Action  要想把数据 传递给jsp

     private String username;

      public String getUsername(){return username;}

     通过什么方式传递 

  

   <result 

type="dispatcher" name="success">/manager/index.jsp</result>

Jsp =---〉 ${username}

Struts2中结果集类型

   

1、 每个action方法都返回一个String类型的值,struts一次请求返回什么值是由这个值确定的。

2、 在配置文件中,每一个action元素的配置都必须有result元素,每一个result对应一个action的返回值。

3、 Result有两个属性:

name:结果的名字,和action中的返回值一样,默认值为success;

type:响应结果类型,默认值为dispatcher.

在struts2-core-2.3.8.jar下面找到struts-default.xml文件中,如下面所示:

 

            

说明:

1、 从上述可以看出总共10种类型

2、 默认类型为ServletDispatcherResult即转发。

3、 结果类型可以是这10种结果类型的任意一种。

Dispatcher类型

(1)、 说明

Dispatcher类型是最常用的结果类型,也是struts框架默认的结果类型。

(2)、 例子

页面参照:/manager/index.jsp

Action参照:AdminAction

配置文件:struts.xml

在配置文件中,可以有两种写法:

第一种写法:

<result type="dispatcher"name="success">/manager/index.jsp</result>

第二种写法:

 <result name="success" type="dispatcher">    

<param name="location">/manager/index.jsp</param>

 </result></result>

下面的图说明了location的来历:

查看源码:

  }

父类中:

 

有一个属性 并且提供了set方法

  

}

6.2.2 Redirect类型

(1)、 说明

Redirect属于重定向。如果用redirect类型,则在reuqest作用域的值不能传递到前台。

redirectAction类型

(1)、说明

1、 把结果类型重新定向到action

2、 可以接受两种参数

a) actionName: action的名字

b) namespace:命名空间

(2)、 例子

第一种方式:

<result name="success" type="redirectAction">resulttype/redirectactionAction.action</result>

第二种方式:

<result name="success" type="redirectAction">

<!-- 

actionName:

请求的action的路径

namespace:

如果不写,默认就是请求的action的路径,如果写,路径将被重新赋值

-->

<param name="actionName">

resulttype/redirectactionAction.action

</param>

</result>

请求的路径

http://localhost:8080/project/csdn/csdn/delete.action?name=aa

Namespace=”csdn/csdn/”

<package name=”ss” namespace=”/csdn/csdn”>

       <action=”delete”>

</package>

<package name=”test” namespace=”/csdn”>

<action=”delete”>

</package>

<package name=”sss” namespace=””>

   <action=”delete”>

</package>

Action名称的搜索顺序

1、获得请求路径的URI,例如url是:http://server/struts2/path1/path2/path3/test.action

2.首先寻找namespace/path1/path2/path3package,如果存在这个package,则在这个package中寻找名字为testaction,如果不存在这个package则转步骤3

3.寻找namespace/path1/path2package,如果存在这个package,则在这个package中寻找名字为testaction,如果不存在这个package,则转步骤4

4.寻找namespace/path1package,如果存在这个package,则在这个package中寻找名字为testaction,如果仍然不存在这个package,就去默认的namaspacepackage下面去找名字为testaction(默认的命名空间为空字符串"" ),如果还是找不到,页面提示找不到action

Action原型  struts2

     Prototype 原型     每次请求都会创建一个新的Action对象

   

Servlet 

     

     Singleton 原型     当第一次请求时,创建servlet对象 之后每次都使用该对象即可。

Servlet的生命周期

        创建---init---service---destory

  相关解决方案