深入Struts2学习(二)
来源:互联网 发布:vb连oracle数据库 编辑:程序博客网 时间:2024/05/22 02:24
访问Servlet API
Struts2不提供Servlet API,Struts2提供了三种方式去访问Servlet AP。
1. ActionContext
2. 实现***Aware接口
3. ServletActionContext
Action搜索顺序
http://localhost:8080/struts2/path1/path2/path3/student.action
第一步:判断package是否存在,如 : path1/path2/path3
第二步:如果package存在,判断action是否存在,如果不存在,则去默认namespace的package里面寻找action,如果没有,则报错。
第二步:如果package不存在,检查上一级路径的package是否存在(直到默认namespace),重复第一步,如果没有,则报错。
动态方法调用
动态方法调用就是为了解决一个Action对应多个请求的处理,以免Action太多。
指定method属性
struts.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts> <package name="default" namespace="/" extends="struts-default"> <action name="helloworld" class="com.lijy.action.HelloAction"> <result>/reult.jsp</result> </action> <!-- 指定method属性 ,即一个方法对应一个action http://localhost:8080/HelloStruts2_1/addAction.action--> <action name="addAction" method="add" class="com.lijy.action.HelloAction"> <result>/add.jsp</result> </action> <action name="updateAction" method="update" class="com.lijy.action.HelloAction"> <result>/update.jsp</result> </action> </package></struts>
在HelloAction需要增加与method同名的两个方法
package com.lijy.action;import com.opensymphony.xwork2.ActionSupport;public class HelloAction extends ActionSupport { //1、指定methode属性public String add() {return SUCCESS;}public String update() {return SUCCESS;}@Overridepublic String execute() throws Exception {System.out.println("执行Action");return SUCCESS;}}
感叹号方式
struts.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts> <package name="default" namespace="/" extends="struts-default"> <action name="helloworld" class="com.lijy.action.{1}Action"> <result>/reult.jsp</result> <!-- 2、感叹号方式,官方不推荐 需要配置struts.enable.DynamicMethodInvocation为true http://localhost:8080/HelloStruts2_1/helloworld!add2.action --> <result name="add2">/add2.jsp</result> <result name="update2">/update2.jsp</result> </action> </package> <constant name="struts.enable.DynamicMethodInvocation" value="true"></constant></struts>
HelloAction增加的方法为
//2、感叹号方式public String add2() {return "add2";}public String update2() {return "update2";}
通配符方式
struts.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts> <package name="default" namespace="/" extends="struts-default"><!-- 3、通配符方式,官方推荐,struts.enable.DynamicMethodInvocation改为false 在action属性中增加method="{1}",同时name值改为helloworld_* 访问为:http://localhost:8080/HelloStruts2_1/helloworld_update3.action *匹配{1},如果 helloworld_*_*,method="{1}{2}" 如果name="*_*" method="{2}" class=com.lijy.action.{1}Action 第一个*匹配{1},第二个*匹配方法名 访问为http://localhost:8080/HelloStruts2_1/Hello_update3.action 也可以通配包名如class=class="com.lijy.{3}.action.{1}Action --> <action name="helloworld_*" method="{1}" class="com.lijy.action.HelloAction"> <result>/reult.jsp</result> <!-- 3、通配符方式 http://localhost:8080/HelloStruts2_1/helloworld_add3.action --> <result name="add3">/{1}.jsp</result> <result name="update3">/{1}.jsp</result> </action> </package></struts>
HelloAction新增的方法
//3、通配符方式public String add3() {return "add3";}public String update3() {return "update3";}
第二种和第三种方式可以解决action配置过多的问题
阅读全文
0 0
- 深入Struts2学习(二)
- struts2的深入学习(二)
- 深入struts2(二)
- 深入Struts2学习(三)
- 深入Struts2学习(四)
- struts2学习(二)
- struts2 与springmvc深入对比(二)
- struts2学习笔记(二) 初识Struts2
- struts2学习笔记(二) 初识Struts2
- Struts2学习笔记(二)
- struts2学习笔记(二)
- Struts2学习笔记(二)
- Struts2学习笔记(二)
- struts2学习笔记(二)
- Struts2学习笔记(二)
- Struts2学习笔记(二)
- Struts2入门学习(二)
- MemCache深入学习(二)
- java 动态规划最大公共子序列问题
- tcpdump抓包分析利器——wireshark
- Collections工具类
- java导出Excel合并单元格
- scikit-learn随机森林调参
- 深入Struts2学习(二)
- 完全分布式安装配置
- 数据库2.0 -- 数据类型和数据表的基本操作
- WebMagic写的网络爬虫
- C 语言现代编程一 HelloWorld
- 图灵测试
- php 开发中常用正则表达式
- 使用实体框架6.1的通用数据访问助手(代码优先)
- 安装postgis