认识Action对象
Action对象是Struts2框架的重要对象,主要用于对HTTP请求进行处理。在Struts2API中,Action对象是一个接口,主要位于xwork2包中(2.5版本以后并入到Struts2-core包中)
在Action接口中,包含5个静态的成员变量,它们是Struts2API为处结果定义的静态变量
SUCCESS:代表Action执行成功的返回值,如果Action执行成功,需要返回到成功页面,就可以将返回值设置为SUCCESS。
NONE:代表Action执行成功返回值,但不需要返回到成功页面。
ERROR:代表Action执行失败返回值。
INPUT:代表需要返回到某个输入信息页面的返回值。如验证错误以后需要返回错误信息在页面就可以设置为INPUT
LOGIN:代表需要用户登录的返回值。
动态Action
想达到动态调用的目的方法有三种:
- actionName!methodName
- 指定method属性
- 使用通配符
actionName!methodName使用
如在配置文件中配置RegistAction,则action请求其中的add(方法的格式如下)
<form action="RegistAction!add">
用户名:<input type="text" name="username"><br>
密码 :<input type="password" name="pwd"><br>
<input type="submit" value="注册">
</form>
重点学会*通配符使用 注意:在struts2的2.5版本以上使用*通配符需要加上
<gloal-allowed-methods>regex:.*</global-allowedd-methods>
也就是使用*号来代替一个或多个匹配字符串,然后在class,method以及result中使用{n}来代表匹配字符(n表示第n个匹配的字符串)
使用*动态设置method
<action name="*_Action" class="com.demo.{1}Action" method="{1}">
<result>{1}_success.jsp</result>
</action>
当请求为login_Action的时候,如上的{1}就等于“login”,也就是说调用com.demo.loginAction类中的login方法
请求成功的话跳转为login_success.jsp页面
Struts2接收参数的四种方式
- 使用action的属性
package com.cszy.action;
import org.apache.commons.lang3.StringUtils;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport{
//1.接收用户名和密码
private String username;
private String pwd;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String login() throws Exception {
System.out.println(username + "-->" + pwd);
return NONE;
}
}
2. 使用DomainModel(域模型)
3. 使用ModelDriver接口【实现接口,手动初始化new实体类对象,调用getModel()方法,方法返回值:return 实体类对象】
package com.lanou.Action;
import java.util.Map;
import com.lanou.entity.User;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class UserAction extends ActionSupport implements ModelDriven<User>{
// 解耦方式
// Map<String, Object> request = (Map)ActionContext.getContext().get("request");
//自动注入
private String username; //用户名
private String password; //密码
private String age; //年龄
private User user = new User();
@Override
public User getModel() { //使用驱动模型ModelDriven
return this.user;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String jsp_reg(){
System.out.println("我是注册页面");
return "jsp_reg";
}
public String jsp_login(){
System.out.println("我是登录页面");
return "jsp_login";
}
public String user_login(){
System.out.println("*************************\n" + "用户名:" + user.getUsername());
System.out.println("密码:" + user.getPassword() + "\n*************************");
System.out.println("登录成功");
return "login_success";
}
public String user_reg(){
System.out.println(user.toString());
System.out.println("*************************\n" + "用户名:" + user.getUsername());
System.out.println("密码:" + user.getPassword());
System.out.println("年龄:" + user.getAge() + "\n*************************");
System.out.println("注册成功");
return "reg_success";
}
}
4. 使用常规的getParameter(与ServletAPI耦合,不提倡)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/15244.html