本文是利用struts2框架,实现一个简单的登录例子,并且在登录后的欢迎界面显示访问量。
第一种:使用MAP键值对储存request,session,application信息,利用count计数。
public class LoginAction1 implements Action {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
// @SuppressWarnings("unchecked");
@Override
public String execute() throws Exception {
if ("张三".equals(user.getName())&&"1234".equals(user.getPassword())){
ActionContext context =ActionContext.getContext();
Map request = (Map)context.get("request");
Map session = context.getSession();
Map application = context.getApplication();
//在请求中放置欢迎信息。
// request.put("greeting","欢迎您来到程序员之家");
ActionContext.getContext().put("greeting", "欢迎您来到程序员之家");
//在session中保存user对象
session.put("user",user);
//统计用户访问量,在application中保存用户访问量数据
Integer count = (Integer)application.get("counter");
if(null == count){
count=1;
}else{
count++;
}
application.put("counter",count);
return SUCCESS;
}else{
return ERROR;
}
}
}
第二种:调用RequestAware,SessionAware,ApplicationAware接口。
public class LoginAction2 implements Action,RequestAware,SessionAware,ApplicationAware{
private User user;
private Map request,session,application;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
// @SuppressWarnings("unchecked");
@Override
public void setRequest(Map request) {
this.request = request;
}
@Override
public void setSession(Map session) {
this.session = session;
}
@Override
public void setApplication(Map application) {
this.application = application;
}
@Override
public String execute() throws Exception {
if ("张三".equals(user.getName())&&"1234".equals(user.getPassword())){
//在请求中放置欢迎信息。
request.put("greeting","欢迎您来到程序员之家");
//在session中保存user对象
session.put("user",user);
//统计用户访问量,在application中保存用户访问量数据
Integer count = (Integer)application.get("counter");
if(null == count){
count=1;
}else{
count++;
}
application.put("counter",count);
return SUCCESS;
}else{
return ERROR;
}
}
}
第三种:使用HttpServletRequest,HttpSession,ServletContext类,创建request,session,context对象,并使用getAttribute和setAttribute方法。
public class LoginAction3 implements Action{
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String execute() throws Exception {
if ("张三".equals(user.getName())&&"1234".equals(user.getPassword())){
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
ServletContext context = ServletActionContext.getServletContext();
//在请求中放置欢迎信息。
request.setAttribute("greeting","欢迎您来到程序员之家");
//在session中保存user对象
session.setAttribute("user",user);
//统计用户访问量,在application中保存用户访问量数据
Integer count = (Integer)context.getAttribute("counter");
if(null == count){
count=1;
}else{
count++;
}
context.setAttribute("counter",count);
return SUCCESS;
}else{
return ERROR;
}
}
}
第四种:调用ServletRequestAware,ServletContextAware接口。
public class LoginAction4 implements Action,ServletRequestAware,ServletContextAware{
private User user;
private HttpServletRequest request;
private ServletContext context;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public void setServletRequest(HttpServletRequest request){
this.request = request;
}
@Override
public void setServletContext(ServletContext context){
this.context = context;
}
@Override
public String execute() throws Exception {
if ("张三".equals(user.getName())&&"1234".equals(user.getPassword())){
// HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
// ServletContext context = ServletActionContext.getServletContext();
//在请求中放置欢迎信息。
request.setAttribute("greeting","欢迎您来到程序员之家");
//在session中保存user对象
session.setAttribute("user",user);
//统计用户访问量,在application中保存用户访问量数据
Integer count = (Integer)context.getAttribute("counter");
if(null == count){
count=1;
}else{
count++;
}
context.setAttribute("counter",count);
return SUCCESS;
}else{
return ERROR;
}
}
}
下面是jsp页面代码,
login.jsp:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
Insert title here
success.jsp:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
欢迎页面
${sessionScope.user.name},${requestScope.greeting}.
本站的访问量是:${applicationScope.counter}
error.jsp:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
登录错误
用户名或密码错误,请重新输入 登录
接下来是web.xml配置信息:
Test
login.jsp
struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
struts2
/*
struts.xml配置信息:
/ex03/HelloWorld.jsp
/ch05/success.jsp
/ch05/error.jsp