- 浏览: 658302 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (609)
- java (139)
- 数据库 (107)
- 微信 (23)
- IT生活 (5)
- web前端 (74)
- SSH (11)
- 设计模式 (12)
- 重要资料 (11)
- 其他 (15)
- java技巧 (23)
- 服务器 (9)
- 2D/GUI (3)
- JAVA3D (2)
- ANT (5)
- Apache项目 (19)
- 数据类型 (10)
- 报表 (3)
- Collections (6)
- SQL/JDBC (15)
- 开发类 (6)
- EJB (6)
- Email (6)
- 文件读写 (2)
- 游戏 (0)
- Flex (2)
- Generic (2)
- HIbernate (12)
- I18N (5)
- Java EE (9)
- java ME (4)
- JDK 6 (8)
- JNDI/LDAP (5)
- JSP (7)
- JSTL (2)
- 正则表达式 (2)
- 安全 (2)
- Struts2 (12)
- Spring (4)
- Web服务 (10)
- Xml (1)
- JavaScript (30)
- AJAX (7)
- 验证 (4)
- 上传下载 (1)
- office办公软件 (1)
- Android (2)
- IOS (0)
- Dubbo (3)
- memcached/redis (1)
- 小程序 (1)
- 微信公众号 (0)
最新评论
-
wf_wangfeng:
怎么我用第一种方法不行呢 alert(document.rea ...
当jsp页面完全加载完成后执行一个js函数 -
Lori_Liu:
有帮助,至少可以解决了目前所遇到的问题!谢谢..
当jsp页面完全加载完成后执行一个js函数 -
starbhhc:
String actionMessage = new Stri ...
Java读取txt文件乱码 -
starbhhc:
Sev7en_jun 写道GOOD
客气,互相交流。。
javaeye论坛规则小测验(答案)--star -
Sev7en_jun:
GOOD
javaeye论坛规则小测验(答案)--star
首先是 actions 包里的类 (2个 action ,一个拦截器)
1.CheckLoginInterceptor
Java代码
/*************************************************
@Copyright (C), 2008, star
@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";
@Override
public 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();
}
// 验证 session
Map 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 {
// 否则终止后续操作,返回LOGIN
System.out.println("no login, forward login page!");
return Action.LOGIN;
}
}
}
/*************************************************
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";
@Override
public 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();
}
// 验证 session
Map 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 {
// 否则终止后续操作,返回LOGIN
System.out.println("no login, forward login page!");
return Action.LOGIN;
}
}
}
2.LoginAction
Java代码
/*************************************************
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;
}
@Override
public 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;
}
}
/*************************************************
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;
}
@Override
public 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
Java代码
/*************************************************
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;
@Override
public String execute() {
return SUCCESS;
}
}
/*************************************************
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;
@Override
public String execute() {
return SUCCESS;
}
}
这个是实体类 UserBean.java
Java代码
/*************************************************
@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;
}
}
/*************************************************
@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
Java代码
<!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"
class="cn.com.lzpeng.actions.CheckLoginInterceptor" />
<!-- 定义一个包含权限检查的拦截器栈 -->
<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"
class="cn.com.lzpeng.actions.LoginAction">
<result name="success">success.jsp</result>
<result name="error">error.jsp</result>
<result name="login">login.jsp</result>
<!--拦截器一般配置在 result 元素之后 -->
<interceptor-ref name="myDefaultStack" />
</action>
<action name="testInterceptor"
class="cn.com.lzpeng.actions.TestInterceptorAction">
<result name="success">content.jsp</result>
<result name="login">login.jsp</result>
</action>
</package>
</struts>
<!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"
class="cn.com.lzpeng.actions.CheckLoginInterceptor" />
<!-- 定义一个包含权限检查的拦截器栈 -->
<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"
class="cn.com.lzpeng.actions.LoginAction">
<result name="success">success.jsp</result>
<result name="error">error.jsp</result>
<result name="login">login.jsp</result>
<!--拦截器一般配置在 result 元素之后 -->
<interceptor-ref name="myDefaultStack" />
</action>
<action name="testInterceptor"
class="cn.com.lzpeng.actions.TestInterceptorAction">
<result name="success">content.jsp</result>
<result name="login">login.jsp</result>
</action>
</package>
</struts>
最后是 4个 jsp界面
login.jsp.
Java代码
<%@ 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>
<%@ 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
Java代码
<%@ 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>
<%@ 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
Java代码
<%@ 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>
<%@ 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 //为测试 拦截器 写的
Java代码
<%@ 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>
1.CheckLoginInterceptor
Java代码
/*************************************************
@Copyright (C), 2008, star
@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";
@Override
public 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();
}
// 验证 session
Map 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 {
// 否则终止后续操作,返回LOGIN
System.out.println("no login, forward login page!");
return Action.LOGIN;
}
}
}
/*************************************************
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";
@Override
public 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();
}
// 验证 session
Map 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 {
// 否则终止后续操作,返回LOGIN
System.out.println("no login, forward login page!");
return Action.LOGIN;
}
}
}
2.LoginAction
Java代码
/*************************************************
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;
}
@Override
public 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;
}
}
/*************************************************
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;
}
@Override
public 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
Java代码
/*************************************************
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;
@Override
public String execute() {
return SUCCESS;
}
}
/*************************************************
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;
@Override
public String execute() {
return SUCCESS;
}
}
这个是实体类 UserBean.java
Java代码
/*************************************************
@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;
}
}
/*************************************************
@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
Java代码
<!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"
class="cn.com.lzpeng.actions.CheckLoginInterceptor" />
<!-- 定义一个包含权限检查的拦截器栈 -->
<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"
class="cn.com.lzpeng.actions.LoginAction">
<result name="success">success.jsp</result>
<result name="error">error.jsp</result>
<result name="login">login.jsp</result>
<!--拦截器一般配置在 result 元素之后 -->
<interceptor-ref name="myDefaultStack" />
</action>
<action name="testInterceptor"
class="cn.com.lzpeng.actions.TestInterceptorAction">
<result name="success">content.jsp</result>
<result name="login">login.jsp</result>
</action>
</package>
</struts>
<!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"
class="cn.com.lzpeng.actions.CheckLoginInterceptor" />
<!-- 定义一个包含权限检查的拦截器栈 -->
<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"
class="cn.com.lzpeng.actions.LoginAction">
<result name="success">success.jsp</result>
<result name="error">error.jsp</result>
<result name="login">login.jsp</result>
<!--拦截器一般配置在 result 元素之后 -->
<interceptor-ref name="myDefaultStack" />
</action>
<action name="testInterceptor"
class="cn.com.lzpeng.actions.TestInterceptorAction">
<result name="success">content.jsp</result>
<result name="login">login.jsp</result>
</action>
</package>
</struts>
最后是 4个 jsp界面
login.jsp.
Java代码
<%@ 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>
<%@ 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
Java代码
<%@ 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>
<%@ 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
Java代码
<%@ 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>
<%@ 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 //为测试 拦截器 写的
Java代码
<%@ 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>
- struts2_base.rar (3.2 MB)
- 下载次数: 8
发表评论
-
maven项目第一行报错:org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.mave
2020-04-09 01:23 509maven项目第一行报错:org.apache.maven.a ... -
删除项目中的所有.svn文件夹(或CVS文件夹)
2019-06-06 19:19 519当你的项目用SVN管理时,在项目的每个文件夹中会多一个.svn ... -
eclipse下生成Java类图和时序图,生成UML图
2016-12-30 02:28 2065最近老板让我做类图和时序图,提苦恼的,完全不会,就从网上整理 ... -
eclipse使用ModelGoon插件自动生成java类的UML图
2016-12-30 02:23 12431、ModelGoon介绍 ModelGo ... -
linux下的tomcat jvm内存
2016-11-30 23:19 593常见的内存溢出有以下两种: Java.lang.OutOf ... -
FTP实现客户端与服务器文件传输(二)
2016-08-06 01:22 1020/*以sun开头的class不是java里面的标准类,而是 ... -
java实现文件转换成二进制存储与取出
2016-08-06 01:21 2743一、功能描述: 将文件转成二进制数据放入数据库中,需要的 ... -
Resource specification not allowed here for source level below 1.7
2016-08-05 11:14 1181现象:tomcat能正常启动,但打开页面时,出现上面的错误 ... -
使用commons.net FTP 和sun.net.ftp.FtpClient 多种方式上传下载(包括批量)删除功能(一)
2016-08-04 10:38 686使用commons.net FTP 上传下载删除功能 ... -
第十一节 CAS服务端RememberMe
2016-06-07 11:03 1192关于启用RememberMe功能所需做的修改描述 ... -
第七节:CAS4.0.0 以上服务端配置多个数据源
2016-06-03 14:50 11311.首先打开deployerConfigContext.x ... -
第六节:CAS服务端自定义数据库认证用户
2016-06-03 11:46 2372/** * @see --------------- ... -
第四节:将CAS https的认证方式改为http
2016-06-01 08:49 1696一、CAS Server端的修改 1、找到cas\W ... -
java 读取html过滤标签
2016-05-27 16:19 994public static void main(Strin ... -
获取cookie
2016-05-26 16:07 823获取cookie -
spring同时集成redis和mongodb时遇到多个资源文件加载的问题
2016-05-14 15:40 773两天平台中集成redis和mongodb遇到一个问题 单独 ... -
Windows上安装OpenSSL和生成证书
2016-05-10 15:52 23981,先下载OpenSSL http://www.slpr ... -
4.ubuntu14.04 安装mongodb笔记
2016-05-06 08:52 6741、使用系统自动获取安装。 1)获取更新 s ... -
3.nodejs nodejs的mysql模块
2016-04-12 22:20 577安装nodejs的mysql模块首先要选定一个数据库,我选择 ... -
第二节:cas处理中文乱码
2016-04-07 11:38 1324cas service配置参考第一节。 casServi ...
相关推荐
struts2 入门示例程序struts2 入门示例程序struts2 入门示例程序struts2 入门示例程序struts2 入门示例程序struts2 入门示例程序struts2 入门示例程序struts2 入门示例程序
以下是对"完整Struts2文件上传示例"的详细解释: 1. **配置Struts2框架** 在Struts2中,我们首先需要在`struts.xml`配置文件中添加相关的拦截器(interceptor)来处理文件上传。`struts.multipart.parser`属性应...
struts 2.3.7简单示例。...示例实现用户登录功能,由于该示例是ssh整合的第一步,所以并未包含Spring、Hibernate框架,仅是Struts2的示例。 如果需要其他整合,请看:http://blog.csdn.net/xz2001/
这个“struts2小程序”很可能是开发者利用Struts2框架开发的一个小型项目,可能包含了基本的CRUD操作或其他特定功能。在描述中提到花费了3小时搭建,暗示这可能是一个简单的入门示例,用于学习或教学目的。 Struts2...
struts taglib使用示例 struts taglib使用示例 struts taglib使用示例struts taglib使用示例 struts taglib使用示例
这个“struts2配置示例”提供了一个基础的实现,展示了如何配置Struts2框架来处理用户的登录功能,使用OGNL(Object-Graph Navigation Language)表达式语言,并实现后台验证。下面我们将深入探讨这些关键知识点。 ...
这个“struts2验证框架示例”提供了深入理解并实际操作Struts2验证功能的机会。 首先,让我们了解一下Struts2验证框架的基本概念。验证框架基于两个主要组件:Validation拦截器和Action类中的验证配置。Validation...
在这个"Struts2购物车示例"中,我们将会探讨如何利用Struts2框架来构建一个功能完备的购物车系统,特别是在处理用户购物选择并将其存储在Session中的方法。 购物车是电子商务网站的核心组件之一,它允许用户在决定...
描述中的"Struts示例demo"进一步强调了这是一个实践性的教程,旨在帮助开发者理解并掌握Struts2的核心概念和工作流程。 标签"Struts2demo"表明这是一个关于Struts2的实例,可能涵盖了Action、Interceptor、Result...
在这个"Struts2 Json示例(Maven项目)"中,我们将会深入探讨如何在Struts2框架下实现JSON(JavaScript Object Notation)数据交换,以及如何结合Maven进行项目构建。 JSON是一种轻量级的数据交换格式,易于人阅读...
这个"Struts 2简单小示例"旨在帮助初学者理解并掌握Struts 2的基本用法和核心概念。 在描述中提到的"http://localhost:8080/test/welcome"是Struts 2应用的一个URL,通常在本地开发环境中,我们可以访问这个URL来...
在"Struts2示例2"中,我们可以深入探索Struts2的核心功能和常见用法。 首先,让我们来看看3.9、3.10、3.8、3.11这些版本号。它们代表了Struts2的不同版本。Struts2会定期发布更新,以修复已知问题、增强性能和引入...
struts2 示例 目的:构建struts2开发框架 适合:有一定struts2基础 实现:通过对用户信息的基本操作来给大家做个示范 1、struts2的搭建 2、web.xml文件的简单配置 3、struts.xml文件的简单配置 4、网站初始化工作...
### Struts2框架详解 #### 一、框架概述与特性 **Struts2**是Apache组织下的一款开源的Web应用程序框架,它继承了Struts1的一些特性,但又进行了重大改进,使其更加强大和灵活。Struts2采用MVC(Model-View-...
这个"struts2 上传 示例"是一个用于演示如何在Struts2框架下实现文件上传的示例项目。 首先,我们要了解Struts2文件上传的基本原理。Struts2使用`Commons FileUpload`库处理文件上传,该库是Apache Commons项目的一...
以下是对"struts2通配符示例"的详细解释: 1. **通配符匹配原理**: Struts2的通配符匹配是基于OGNL(Object-Graph Navigation Language)表达式实现的。它允许我们在Action配置中使用`*`和`?`两个特殊字符来创建...
这个"struts2简单示例"旨在帮助初学者快速掌握Struts2的基本用法,特别是实现一个简单的登录功能。下面将详细解释相关知识点。 首先,Struts2框架的核心是Action类,它是处理用户请求的中心。在这个示例中,你会...
下面将详细解释Struts2通配符的用法,并结合示例代码进行解析。 1. **Struts2通配符概述** Struts2的通配符映射允许我们使用星号(*)来匹配一个或多个字符,或者使用两个星号(**)来匹配任意数量的目录。这种...
这个"Struts2应用程序示例"是专为初学者和开发者设计的,它利用Eclipse 3.3作为集成开发环境,JDK 6.0作为Java运行环境,以及Tomcat 6.0作为应用服务器,提供了实际操作的平台来理解和实践Struts2的核心概念。...