Struts2之访问路径
上一篇已经和大家分享了关于Struts2命名空间和Action的三种创建方式,本篇我们接着命名空间的内容,来一起探讨一下关于Struts2的访问路径问题,何为访问路径,就是指当我们在浏览器输入地址,点击回车,向服务器发送请求,这个访问路径就是今天我们要讨论的知识点,我们以上一篇的访问路径为例,为大家分析一下Struts2访问路径的本质。对于这个url路径http://localhost:8080/Struts/hello/login,我来分析一下他的组成,http://这是http请求协议;localhost这是本地访问地址,等同于127.0.0.1,;8080:是我们本地服务器的访问端口;Struts:使我们的工程名称;hello:使我们的命名空间;login:是我们的命名空间下的Action名称。把这些组合在一起就是我们的Struts2 Action的请求方式,当然这里如果我们的命名空间下设置了默认Action,最后的Action名称可以没有。对于Struts2的访问路径就为大家介绍这么多,下面我们一起来学习一下DMI动态方法绑定和通配符的使用。
首先我们先来探讨一下DMI动态方法绑定,在上一篇的内容里面我们访问Action中的方法的方式,均是通过在struts.xml文件里面默认设置好的,这样很不方便我们的接口调用人员使用,那如何进行动态方法绑定呢?其实很简单,就以上面的url路径为例,我们看一下如何在url端进行访问路径的动态绑定。上面的接口访问的是login Action下的login方法,我们就可以这样来写:http://localhost:8080/Struts/hello/login!login,这样我们的程序就可以动态进行Action访问方法绑定了,大家看出来吗?Struts2里面用!将Action和Action中的待访问方法进行区分。
动态绑定是不是很简单,当然一些小伙伴可能感觉url地址里面加个“!”怪怪的,还有没有其他方法来进行动态方法绑定呢?答案是必须滴,我们还可以通过通配符配置,来完成上面的动态方法绑定。下面我们就用一个例子,来把今天学习的知识串联起来:

首先看一下我们的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> <constant name="struts.enable.DynamicMethodInvocation" value="true" /><!--在使用DMI动态方法调用时,设置为true,否则会出现调用异常问题-->
<constant name="struts.devMode" value="true" /> <!-- 常规Action配置 -->
<package name="hell" namespace="/hell" extends="struts-default">
<!-- 访问控制 -->
<action name="index" class="com.edu.action.Hell">
<result>
/hello.jsp
</result>
<result name="error">
/error.jsp
</result>
</action>
</package> <!-- 使用通配符进行动态方法绑定的Action配置 -->
<package name="user" namespace="/user" extends="struts-default">
<!-- 访问控制 -->
<action name="index" class="com.edu.action.UserAction">
<result>
/index.jsp
</result>
</action>
<action name="*_*" class="com.edu.action.{1}Action" method="{2}">
<result>
/{2}.jsp
</result>
</action>
</package> <!-- Add packages here --> </struts>
UserAction.class代码:
public class UserAction extends ActionSupport implements UserManage{
public String add() {
// TODO Auto-generated method stub
return SUCCESS;
}
public String del() {
// TODO Auto-generated method stub
return SUCCESS;
}
public String getUser() {
// TODO Auto-generated method stub
return SUCCESS;
}
public String getUserList() {
// TODO Auto-generated method stub
return SUCCESS;
}
public String update() {
// TODO Auto-generated method stub
return SUCCESS;
}
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
return SUCCESS;
}
}
Hell.class
public class Hell extends ActionSupport{
public String execute() throws Exception {
return SUCCESS;
}
public String addLogin(){
return ERROR;
}
}
下面我们就可以进行测试了,http://localhost:8080/Struts2/user/User_add

下面我们来一起分析一下上面的请求地址:http://localhost:8080/Struts2/user/User_add,命名空间之前的部分我就不再赘述,如果你有不明白的地方,可以异步顶部,看一上面的解释,下面我们重点来看一下User_add,这是什么意思呢?我们向上看一下我们的struts.xml的配置,我们在Action name配置的是*_*,然后在Action绑定Action类是用的是第一个*识别到的参数,动态绑定方法时使用的是第二个*绑定的参数,这里的“_”就是Struts2进行参数绑定的分割符。有过sql操作的朋友一定对于*不陌生,我们现在就暂定它为占位。
对于DMI动态方法绑定,这里我就以常规配置的Action为大家进行一下演示,访问路径为:http://localhost:8080/Struts2/hell/index!addLogin
好了,到这里关于Struts2路径访问和DMI动态方法绑定以及通配符的知识就为大家介绍完了。后续内容持续更新中。。。
Struts2之访问路径的更多相关文章
- Struts2 Action的访问路径
1. Action的访问路径 扩展名 缺省以.action结尾,请参考:default.properties文件,可以通过配置改变这一点: <constant name="st ...
- struts2命名空间与访问路径
比如项目deom的struts.xml中有如下片段 Java代码 <package name="demo" extends="struts-default" ...
- struts2学习二:Tomcat的部署目录和访问路径问题
1:idea中配置tomcat后,那么最终的web工程发布到哪里去了?为什么在访问路径中不加工程名就可以访问? 1.1:因为tomcat有段时间没接触了,先回顾下tomcat的目录结构吧? 如图所示: ...
- 【转】Tomcat的默认访问路径
放在外网的应用,用户多是直接输入域名访问,相信没有哪个后面还加个尾巴,而Tomcat的默认目录是ROOT,所以我们需要更改其默认目录. 更改Tomcat的默认目录很简单,只需要修改server.xml ...
- SpringMVC 请求路径结尾存在.使用@PathVariable访问路径内容,路径参数获取不准确的问题
SpringMVC采用Get方式请求资源时,如果请求路径的结尾中带有小数点(.)时,同时使用@PathVariable访问路径内容时,请求路径中最后一个小数点及其后面的内容会被Spring截断丢弃比如 ...
- Eclipse中修改Web项目的URL访问路径
背景 访问路径,也就是指在浏览器中访问该web系统时的根路径,比如http://localhost:8080/xxxx/index.jsp 这里的xxxx,也就是request.getContext ...
- Windows下如何修改php.ini的访问路径?
Windows下,用 IIS跑PHP,有个缺点,那就是一定要把 php.ini 放在 Windows 的系统路径下 (C:/Windows) .不过,可以通过以下方式修改访问路径: 第一步: 把PHP ...
- oracle学习----访问路径
什么是访问路径?表扫描数据的时候使用了什么方式,这个方式就是访问路径 1.全表扫描TABLE ACCESS FULL 全表扫描,多块读,等待事件:db file scattered read 如果是并 ...
- Java Web中资源的访问路径
在web应用中,以“/”开头的是绝对路径,不以“/”开头的是相对路径. 在服务器端,通常都使用绝对路径.例如web.xml.struts.xml.servlet等的访问路径都是以“/”开始. 服务 ...
随机推荐
- OSG实现场景漫游(转载)
OSG实现场景漫游 下面的代码将可以实现场景模型的导入,然后在里面任意行走,于此同时还实现了碰撞检测. 源代码下载地址: /* * File : Travel.cpp * Description : ...
- Borda count
波达计数法(Borda Count)是较为简单的排序投票法,每个选项借由选票上的排序来取得积分,积分最高者获胜.另一个类似的方法则是位置投票制. 投票人按喜好排列候选者.如果候选者在选票的排第一位,它 ...
- 神经网络NN
神经网络基本模型: 1.前向神经网络:无圈的有向图N=(V,E,W),其中,V为神经元集合,E为连结权值集合,W为每一连结赋予一实值的权重. 神经元集V可以被分成无接受域的输入结点集V1,无投射域的输 ...
- Myeclipse快捷键集合
Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ctrl+Alt+↑ 复制当前行到上一行(复制增加)Alt+↓ 当 ...
- Delphi 获取内存及CPU信息的函数
Uses MemoryCpuUtils;//首先引用该单元 //声明下列变量用来存储读取的数值 Var iTotalPhysics, iTotalVirtual, iTotalPageFile, iC ...
- --@angularJS--$scope.watch监听模型变化
$watch简单使用 $watch是一个scope函数,用于监听模型变化,当你的模型部分发生变化时它会通知你. $watch(watchExpression, listener, objectEqua ...
- redis sets类型及操作
sets类型及操作set是集合,它是string类型的无序集合.通过hash table实现,添加.删除.查找的复杂度都是0(1).对集合我们可以实现取交际.差集并集.通过这些操作我们可以实现SNS中 ...
- 腾讯面试题:10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。
腾讯面试题:10G 个整数,乱序排列,要求找出中位数.内存限制为 2G. 题目和基本思路都来源网上,本人加以整理. 题目:在一个文件中有 10G 个整数,乱序排列,要求找出中位数.内存限制为 2G.只 ...
- spring mvc 文件下载
在controller中进行代码编写: @RequestMapping("/download") public ResponseEntity<byte[]> downl ...
- cookie、session、sessionid的区别
我们都知道银行,银行的收柜台每天要接待客户存款/取款业务,可以有几种方案: 1.凭借柜台职员的记忆,由收柜台职员来为每位顾客办理存款/取款业务,单凭职员的记忆力,要记到每位顾客的相貌,并迅速这个顾客当 ...