首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

一个 struts2 入门级的小事例 (Action , 拦截器使用)

2013-09-11 
一个 struts2 入门级的小例子 (Action , 拦截器使用)myeclipse5.5 + tomcat5.5 + jdk1.5??? 需要的朋友可

一个 struts2 入门级的小例子 (Action , 拦截器使用)

myeclipse5.5 + tomcat5.5 + jdk1.5??? 需要的朋友可以直接下载看看?^_^ ...

?

首先是? actions 包里的类 (2个 action ,一个拦截器)

?

1.CheckLoginInterceptor

?

/************************************************* @Copyright (C), 2008, lzpeng  @File name:      CheckLoginInterceptor.java @Author:         lzpeng @CreateDate:     2008-6-17  @Description:    CheckLoginInterceptor拦截器  @Extends:        AbstractInterceptor     @Function List:  1. public String intercept() *************************************************/package cn.com.lzpeng.actions;import java.util.Map;import com.opensymphony.xwork2.Action;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.AbstractInterceptor;public class CheckLoginInterceptor extends AbstractInterceptor {private static final long serialVersionUID = 1L;public static final String USER_SESSION_KEY="user";  @Overridepublic String intercept(ActionInvocation actionInvocation) throws Exception {System.out.println("begin check login interceptor");// 对LoginAction不做该项拦截Object action = actionInvocation.getAction();if (action instanceof LoginAction) {System.out.println("exit check login, because this is login action.");return actionInvocation.invoke();}// 验证 sessionMap session = actionInvocation.getInvocationContext().getSession();String username = (String) session.get(USER_SESSION_KEY);if (username != null) {// 存在的情况下进行后续操作。System.out.println(username+" already login!");return actionInvocation.invoke();} else {// 否则终止后续操作,返回LOGINSystem.out.println("no login, forward login page!");return Action.LOGIN;}}}

?

2.LoginAction

?

/************************************************* @Copyright (C), 2008, lzpeng  @File name:      LoginAction.java @Author:         lzpeng @CreateDate:     2008-6-17  @Description:    LoginAction控制类     @Extends:        ActionSupport     @Function List:  1. public UserBean getUserBean() 返回一个UserBean实体 2. public void setUserBean(UserBean userBean)  设置一个UserBean实体 3. public String execute() 执行Action的方法 4.public void setSession() 设置 session 值 *************************************************/package cn.com.lzpeng.actions;import com.opensymphony.xwork2.ActionSupport;import cn.com.lzpeng.entity.UserBean;import java.util.Map;import org.apache.struts2.interceptor.SessionAware;public class LoginAction extends ActionSupport implements SessionAware {private static final long serialVersionUID = 1L;private UserBean userBean;private Map<String, String> session;public UserBean getUserBean() {return userBean;}public void setUserBean(UserBean userBean) {this.userBean = userBean;}@Overridepublic String execute() {if (userBean == null) {return LOGIN;}String name = userBean.getName();String pwd = userBean.getPassword();session.put(CheckLoginInterceptor.USER_SESSION_KEY, name);if (name.equals("java") && pwd.equals("struts")) {return SUCCESS;} else {return ERROR;}}public void setSession(Map session) {this.session = session;}}

?

3.TestInterceptorAction???

?

/************************************************* @Copyright (C), 2008, lzpeng  @File name:      LoginAction.java @Author:         lzpeng @CreateDate:     2008-6-17  @Description:    TestInterceptorAction控制类     @Extends:        ActionSupport     @Function List:  1.public String execute() 执行 Action 的方法 *************************************************/package cn.com.lzpeng.actions;import com.opensymphony.xwork2.ActionSupport;public class TestInterceptorAction extends ActionSupport {private static final long serialVersionUID = 1L;@Overridepublic String execute() {return SUCCESS;}}

?

?

这个是实体类 UserBean.java

?

/************************************************* @Copyright (C), 2008, lzpeng  @File name:      LoginAction.java @Author:         lzpeng @CreateDate:     2008-6-17  @Description:    UserBean实体类     *************************************************/package cn.com.lzpeng.entity;public class UserBean {private String name;private String password;public void setName(String name) {this.name = name;}public void setPassword(String password) {this.password = password;}public String getName() {return name;}public String getPassword() {return password;}}

?

?

struts.xml

?

<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"        "http://struts.apache.org/dtds/struts-2.0.dtd"><struts><!-- 加载默认的 struts2 配置文件 --><include file="struts-default.xml" /><!-- 继承默认的 struts2 配置文件 --><package name="default" extends="struts-default"><!-- 定义一个名为 checkLogin 的拦截器 --><interceptors><!-- 定义权限检查拦截器 --><interceptor name="checkLogin"/><!-- 定义一个包含权限检查的拦截器栈 --><interceptor-stack name="myDefaultStack"><!-- 定义拦截器栈包含checkLogin拦截器 --><interceptor-ref name="checkLogin"></interceptor-ref><interceptor-ref name="defaultStack"></interceptor-ref></interceptor-stack></interceptors><!-- 设置全局 全局默认的拦截器栈--><default-interceptor-ref name="myDefaultStack"></default-interceptor-ref><!-- 定义全局Result --><global-results><!-- 当返回login视图名时,转入/login.jsp页面 --><result name="login">/login.jsp</result></global-results><!--    action 标签里 name属性代表我们要处理的.action的前面部分   action 标签里 class属性代表我们需要哪个类来处理   result 标签的 name属性代表action类的执行方法的返回值,   action类的默认执行方法是public String execute()  --><action name="login"/></action><action name="testInterceptor"name="code"><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path + "/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><base href="<%=basePath%>"><title>struts2</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><!—-注意这里action="login.action"因为要与Struts.xml里你注册的那个别名叫"login"   --><form action="login.action" method="post" ><fieldset><legend>用户登录</legend><p align="center">帐?号:<input type="text" name="userBean.name"  /><!—-注意这里一定要写name="bean.name",因为要与LoginAction.java里面定义的bean对应name是它的helloWorld的属性    --></p><p align="center">密?码:<input type="password" name="userBean.password" /></p><p align="center"><input type="submit" value="登 录" /></p></fieldset></form></body></html>

?

?

success.jsp

?

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path + "/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><base href="<%=basePath%>"><title>成功了</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><form action="testInterceptor.action"><div align="center">恭喜${userBean.name}登录成功了 !<br>只有通过这才能访问 content.jsp!<br><br><input type="submit" value=" content.jsp"><br><br>主要演示拦截器 CheckLoginInterceptor 对 TestInterceptorAction 的拦截情况(可以试直接访问TestInterceptorAction.action)</div></form></body></html>

?

?error.jsp

?

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path + "/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><base href="<%=basePath%>"><title>error</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><div align="center">这是一个错误界面 !用以下帐号试试:<br>id ? : java<br>password:  struts</div><div>    <a href="login.jsp">返回登录界面</a></div></body></html>

?

content.jsp??? //为测试 拦截器 写的

?

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path + "/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><base href="<%=basePath%>"><title>content</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><div align="center">这里是 content.jsp!<br>成功通过拦截器 CheckLoginInterceptor......<br>复制上边地址 , 在新打开的窗口里粘贴 , 回车试试......</div></body></html>

?


我的异常网推荐解决方案:The server encountered an internal error () that prevented it from fulfilling this request.,http://www.myexception.cn/java-web/317.html

热点排行