struts2的请求参数url的写法以及相关struts2与Spring集成时的情况
2015-04-12 09:20
411 查看
在使用struts2的时候,我们都知道以前的那种以离散的值作为传递的单位,他们的请求url是这么写的: localhost:8080/test/login?username=hello&password=world
以及其对应的action是这么写的
然而事实上可以这样写url: localhost:8080/test/login?user.username=hello&user.password=world
localhost:8080/test/login?user.username=hello&user.password=world (user.username=hello&user.password=world)
在这里值得提醒的是如果相应的User对象里的属性没有对应的参数给他复制,则为null。
如果请求参数的url的值多了比如如下请求url写法:http://localhost:8080/test/login?user.username=hello&user.password=world&user.permission=1 ,会抛出如下异常 :
ognl.NoSuchPropertyException: com.test.entity.User.permission
**********************************************************************************************这是一条分割线
顺便多说几句 如果是Spring集成了struts2的话action可以使用Spring的注解驱动。。。。写法如下:
可以使用@Controller("login")的注解进行驱动,@Scope("prototype")表示的是该action是单例的。
@Controller里的"login"表示的是struts.xml配置文件里的 class属性。
同学们,看到这儿是不是想起了struts2的类型转换器!不过我个人认为struts2的类型转换器还是有必要存在的,因为表单提交时产生的url请求格式是以前的那种,即localhost:8080/test/login?username=hello&password=world
当然了,如果你使用javascript脚本的让其产生的url的请求格式变成下面这种也是可以的。
localhost:8080/test/login?user.username=hello&user.password=world
以及其对应的action是这么写的
<span style="font-size:24px;">public class LoginAction extends ActionSupport { private String username ; private String password ; //下面省略对应的getter setter方法.... @Override public String execute() throws Exception { //..........一些业务逻辑代码 return SUCCESS ; } }</span>
然而事实上可以这样写url: localhost:8080/test/login?user.username=hello&user.password=world
<span style="font-size:24px;">public class LoginAction extends ActionSupport { private User user; //下面省略对应的getter setter方法.... @Override public String execute() throws Exception { //..........一些业务逻辑代码 return SUCCESS ; } }</span>如果这么写struts2可以自动生成一个User对象 ,而User对象里的属性值是便是来自与请求参数url里的值
localhost:8080/test/login?user.username=hello&user.password=world (user.username=hello&user.password=world)
在这里值得提醒的是如果相应的User对象里的属性没有对应的参数给他复制,则为null。
如果请求参数的url的值多了比如如下请求url写法:http://localhost:8080/test/login?user.username=hello&user.password=world&user.permission=1 ,会抛出如下异常 :
ognl.NoSuchPropertyException: com.test.entity.User.permission
**********************************************************************************************这是一条分割线
顺便多说几句 如果是Spring集成了struts2的话action可以使用Spring的注解驱动。。。。写法如下:
<span style="font-size:24px;">@Controller("login") @Scope("prototype") public class LoginAction extends ActionSupport { private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; } @Override public String execute() throws Exception { System.out.println(this.user.getUsername()); System.out.println(this.user.getPassword()); System.out.print("user object is null ? answer is" ); System.out.println(this.user == null); return SUCCESS ; } } </span>
可以使用@Controller("login")的注解进行驱动,@Scope("prototype")表示的是该action是单例的。
@Controller里的"login"表示的是struts.xml配置文件里的 class属性。
<span style="font-size:24px;"><action name="login" class="login"> </action></span>
同学们,看到这儿是不是想起了struts2的类型转换器!不过我个人认为struts2的类型转换器还是有必要存在的,因为表单提交时产生的url请求格式是以前的那种,即localhost:8080/test/login?username=hello&password=world
当然了,如果你使用javascript脚本的让其产生的url的请求格式变成下面这种也是可以的。
localhost:8080/test/login?user.username=hello&user.password=world
相关文章推荐
- Java乔晓松-Struts2中通配符、常量、自定义类型转换器以及接受请求参数处理
- 用el表达式和Struts2 分别获取url请求的参数
- java发送url请求进行文件的提交以及后台struts2的action接收处理
- struts2--URL带参数的请求注意空格的影响
- 使用Spring AOP对url参数进行解密以及对返回结果进行加密
- Struts2Action请求转发以及参数 拦截器传递参数
- JAVAWEB开发之Struts2详解(二)——Action接受请求参数、类型转换器、使用Struts2的输入校验、以及遵守约定规则实现Struts2的零配置
- java发送url请求进行文件的提交以及后台struts2的action接收处理
- jQuery发送含有数组参数的ajax请求以及后台Struts2的OGNL解析错误
- JavaScript 和 JQuery获取URL以及URL中的请求参数
- extjs 循环执行多个异步请求时,参数和后台以及相关问题和衍生问题的处理
- WEB启动时,如何加载spring容器和struts2容器(bean的注入和url如何请求)
- springboot获取URL请求参数的多种方式
- python爬虫之请求(url)构造 —— 寻找参数来源以及中文编码
- Android中利用HttpURLConnection发送Post请求并添加参数的写法
- 默认情况下,struts2是无法处理以.do为后缀的请求url的
- 并发请求的参数,以及集值的相关知识
- jQuery发送含有数组参数的ajax请求以及后台Struts2的OGNL解析错误
- jQuery发送含有数组参数的ajax请求以及后台Struts2的OGNL解析错误
- springboot获取URL请求参数的几种方法