目前我学会的方式有三种:
1.通过ActionContext
2.通过ServletActionContext
3.通过接口
1、通过ActionContext
public String execute() throws Exception{
ActionContext.getContext().put("name", "初始的request"); //<---------------------(1)
Map<String,Object> sessionScope=ActionContext.getContext().getSession(); //<---------------------(2)
sessionScope.put("name", "sessionName");
if(
("2019".equals(u.getUsername())) && ("2019".equals(u.getUserpass())))
{
return SUCCESS;
}
return ERROR;
}
内置域直接使用(1),其他域就用(2);集合中的对象是一个Map对象,而这个Map对象的键是String类型,值是Object类型,是固定写法。
<body>
<font color="red" size="10">用户名或密码错误!</font>
<font color="red" size="10">${name}</font>
</body>
在登录成功或失败的跳转页面显示相应的值,我用的是EL表达式,当(1)、(2)同时获取时(就是两个都写),获取的是内置域的。
2.通过ServletActionContext
HttpServletRequest request=ServletActionContext.getRequest();
HttpSession session=request.getSession();
public String execute() throws Exception{
System.out.println("初始的request"+request);
request.setAttribute("name", "初始的request");
session.setAttribute("name", "初始的session");
if(
("2019".equals(u.getUsername())) && ("2019".equals(u.getUserpass())))
{
return SUCCESS;
}
return ERROR;
}
使用setAttribute()给“name”赋值,然后在相应跳转页面显示出来。
3.通过接口
public class LoginAction extends ActionSupport implements ServletRequestAware{
private User u;
private HttpServletRequest request; //<----------
public void setServletRequest(HttpServletRequest request) { //<----------
// TODO Auto-generated method stub
this.request=request;
}
public String execute() throws Exception{
System.out.println("初始的初始的request"+request);
request.setAttribute("name", "初始的request");
if(
("2019".equals(u.getUsername())) && ("2019".equals(u.getUserpass())))
{
return SUCCESS;
}
return ERROR;
}
public User getU() {
return u;
}
public void setU(User u) {
this.u = u;
}
}
通过HttpServletRequest接口实现功能,在相应跳转页面显示信息。