首页 > 代码库 > Struts入门(三)深入Struts用法讲解

Struts入门(三)深入Struts用法讲解

  1. 访问Servlet API
  2. Action搜索顺序
  3. 动态方法调用
  4. 指定多个配置文件
  5. 默认Action
  6. Struts 后缀
  7. 接收参数
  8. 处理结果类型

1.访问Servlet API

   首先我们了解什么是Servlet API 

  httpRequest、httpResponse、servletContext
  3个api对应jsp面向对象:request、response、application
  servlet中可以直接调用servlet api


  struts2 Action中execute没有任何参数,也就是不存在servlet api 

   Struts2框架底层是基本Servlet的,所以我们肯定要去访问Servlet API,而且开发Web应用不去访问Servlet API也是不可能的,

所以我们Struts2框架提供了我们去访问Servlet API的方法;            

struts2 提供了3种方式访问servlet api:       

   ①:使用ServletActionContext访问Servlet API;    ActionContext类   

   ②:使用ActionContext访问ServletAPI;              ServletActionCotext类

   ③:使用一些接口 如 ServletRequestAwa...;          实现***Aware接口

  

2.Action搜索顺序

 

我们来看一个路径:

我们这里新建一个student.action 没有命名空间那么我们访问的路径就是

http://localhost:8080/ProjectName(项目的名字)/student.action

那么我们改成下面的路径

 http://localhost:8080/ProjectName(项目的名字)/path1/path2/path3/student.action

 在浏览器中访问也能访问到正确的页面

 

因此我们可以看出访问的顺序是从文件的上级 也就是最后一级包开始找

 http://localhost:8080/ProjectName(项目的名字)/path1/path2/path3/student.action

 http://localhost:8080/ProjectName(项目的名字)/path1/path2/student.action

 http://localhost:8080/ProjectName(项目的名字)/path1/student.action

 http://localhost:8080/ProjectName(项目的名字)/student.action

 从path3 一直到path1都找不到 最后在根目录下找到  如果找不到就会报错了  

  这就是action的搜索顺序!

3.动态方法调用

   在.net MVC中 我们在Controller中创建一个一个方法  只要在页面中指定相应的mvc路径  我们视图的一个url就能请求得到

在struts中 我们则需要手工进行配置  指定页面和后台方法的匹配

  这里的动态方法调用就是为了解决一个Action对应多个请求得处理。以免Action太多(像指定method属性的配置方式  )

  动态调用有三种方式  这里指定method属性和感叹号方式(不推荐使用)不再说明   我们来说下常用的通配符方式:

首先在struts.xml配置我们的参数

技术分享
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd" ><struts> <package name="default" namespace="/" extends="struts-default">    <action name="HelloWorld2" class="com.HelloWorldAction">        <result>/result.jsp</result>    </action>    <!--         name 代表我们的action名也就是url里面的名字           class是指定我们的后台类文件        method {1} 与name中的*对应     -->    <action name="helloworld_*"  method="{1}" class="com.HelloWorldAction">        <result >/result.jsp</result>        <result name="add" >/add.jsp</result>        <result  name="update" >/update.jsp</result>    </action> </package></struts>
View Code

这里我们需要创建三个jsp文件  默认路径的result.jsp   还有add方法的add.jsp   update方法的update.jsp

技术分享

 

 技术分享

页面里面我们都用一句话简单区分  这样 启动Debug as Server 然后在浏览器中访问就可以对应到相应的路径了

技术分享

 

技术分享

技术分享

这里struts.xml文件result标签值都改成{1}.jsp  一样的道理    这里可以随意加参数进行配置

 

Struts入门(三)深入Struts用法讲解