struts2的请求参数url的写法以及相关struts2与Spring集成时的情况

在使用struts2的时候,我们都知道以前的那种以离散的值作为传递的单位,他们的请求url是这么写的: localhost:8080/test/login?username=hello&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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值