Struts2框架动态方法及通配符使用

动态方法与通配符可以压缩代码,使相同的类中不同方法共用同一个标签,通过不同方法返回的逻辑视图(即方法返回的字符串)的不同来实现跳转到不同的action或页面,但是由于动态方法调用中前端URL的固定格式,会导致后台数据架构泄露,所以不用推荐使用,通配符方式相对来说更加安全,方便

  1. 通配符
    通配符使用时在<action>标签的name属性值上使用*来代表调用哪个方法以及跳转页面等,可以使用多个*号,由于是多个方法共用同一个action,所以方法返回的字符串不能相同,否则会造成混乱,method的属性值是根据前端页面的url地址来区别的,前端页面中把方法名写到第?*号的位置,在method方法的值中就写{?}
    xml配置文件
   <action name="*User" class="action.Login" method="{1}">
       <result name="Login_SUCCESS" type="chain">${nextAction}</result>
       <result name="Login_error">/struts2Jsp/login.jsp</result>
       <result name="Logout_success">/struts2Jsp/login.jsp</result>
   </action>

前端页面

 <form action="loginUser.action" method="post">
  用户名:<input onfocus="ts('tsxx')" type="text" name="user.name" ><br>
  密码:<input onfocus="ts('tsxx')" type="password" name = "user.password"><br>
    <span id="tsxx">${ts}</span><br>  
  <input type="submit" value="登录">
 </form>

后台java方法

 public String login(){
 	  if(user.getName().equals("aaa") && user.getPassword().equals("123")){
 		  System.out.println(user.getName());
     	  System.out.println(user.getPassword());
     	//  转发action中要跳转到的action名称
     	  nextAction="logoutUser";
     	  msg="hello";
     	  return "Login_SUCCESS";
 	  }else{
 		 msg="用户名或密码错误!";
 		 return "Login_error";
 	  }	 
   }
  1. 动态方法
    动态方法调用作用与通配符作用差不多,在action标签中不配置method属性,方法名是通过类似于参数的方法传递的,中间用!分割
    xml配置文件
  <action name="user" class="action.Login">
       <result name="Login_SUCCESS">/zhuce.jsp</result>
       <result name="Login_error">/struts2Jsp/login.jsp</result>
       <result name="Logout_success">/struts2Jsp/login.jsp</result>

前端页面

 <form action="user!login.action" method="post">
  用户名:<input onfocus="ts('tsxx')" type="text" name="user.name" ><br>
  密码:<input onfocus="ts('tsxx')" type="password" name = "user.password"><br>
    <span id="tsxx">${ts}</span><br>  
  <input type="submit" value="登录">
 </form>

后台java方法

 public String login(){
 	  if(user.getName().equals("aaa") && user.getPassword().equals("123")){
 		  System.out.println(user.getName());
     	  System.out.println(user.getPassword());
     	//  转发action中要跳转到的action名称
     	  nextAction="logoutUser";
     	  msg="hello";
     	  return "Login_SUCCESS";
 	  }else{
 		 msg="用户名或密码错误!";
 		 return "Login_error";
 	  }	 
   }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值