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";
@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
/*************************************************
@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;
}
@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
/*************************************************
@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;
@Override
public 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"
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
<%@ 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>
分享到:
相关推荐
这个“struts2入门级的例子”是一个非常适合初学者的资源,它将引导你了解Struts2的基础知识和核心概念。通过实践这些例子,你可以快速掌握Struts2的使用方法,从而提高你的Web开发技能。 1. **配置环境**: 首先,...
Struts2是一个基于MVC(Model-View-Controller)设计模式的开源JavaEE框架,它极大地简化了企业级Web应用的开发。这个"struts2入门例子"旨在帮助初学者理解Struts2的基本架构和核心功能,通过实际操作来学习如何配置...
总之,这个入门级例子涵盖了Struts1.3的基础架构和主要组件的使用,对初学者来说是一个很好的起点,可以让他们快速理解Web应用开发的基本流程和思想。通过实践这个例子,可以为学习更复杂的Struts1.3应用或其他Java ...
`Interceptor`(拦截器)是Struts2的一个强大特性,它允许我们在Action执行前后插入自定义逻辑。虽然在这个简单的例子中可能没有使用到拦截器,但了解它们的概念是必要的。拦截器可以用于日志记录、权限检查、事务...
这个“struts2简单例子”是初学者理解Struts2工作原理和核心概念的一个很好的起点。让我们深入探讨一下Struts2的基础知识。 1. **MVC架构**: MVC模式是软件设计中的一个经典模式,它将应用逻辑分为三个主要部分:...
3. **拦截器(Interceptors)**:拦截器是Struts2的一大特色,它们在Action调用前后执行,可以实现如日志记录、权限检查、数据验证等功能。 4. **结果类型(Result Types)**:结果类型定义了Action执行后的跳转...
4. **拦截器(Interceptor)**:拦截器是Struts2的一个强大特性,它允许在Action执行前后插入自定义逻辑。常见的拦截器有:`params`拦截器处理请求参数,`validation`拦截器执行字段验证,`exception`拦截器处理异常...
总的来说,"Struts2入门小程序"将涵盖Struts2的基本架构、配置、MVC模式的应用、标签库的使用、拦截器的实现、数据绑定以及可能的Spring集成等多个方面,是初学者深入理解Struts2框架的宝贵资源。通过实际操作和学习...
Struts2是一个强大的MVC(Model-View-Controller)框架,用于构建企业级的Java Web应用程序。这个"几个Struts2 入门例子"显然旨在帮助初学者理解并掌握Struts2的基础用法。以下是对Struts2核心概念和常见实践的详细...
这个"Struts2入门例子"是一个很好的起点,旨在帮助初学者快速理解并掌握Struts2的核心概念和使用方法。 在Struts2框架中,模型(Model)负责业务逻辑,视图(View)处理用户界面,控制器(Controller)则是这两者...
在入门级的例子中,我们首先需要引入Struts2运行所需的依赖库,包括commons-logging、freemarker、ognl、struts2-core和xwork等。接着,在`web.xml`中配置FilterDispatcher过滤器,让Struts2能拦截所有请求。然后,...
Struts2是一个强大的Java web应用程序框架,它基于MVC(Model-View-Controller)设计模式,为开发者提供了构建可维护性、可扩展性良好的应用程序的工具。本篇将详细解析Struts2官方自带的四个例子,帮助你深入理解其...
3. **Interceptor(拦截器)**:拦截器是Struts2的一个重要特性,它们按照预定义的顺序在Action调用前后执行,可以实现日志记录、权限检查、事务管理等功能,提高了代码的复用性和可维护性。 4. **Tiles**:Struts2...
Struts2是一个强大的Java web应用程序框架,用于构建和管理MVC(模型-视图-控制器)架构的应用程序。它的核心优势在于提供了一种简洁而优雅的方式来处理用户请求、业务逻辑和视图展示。本入门demo将带你一步步了解...
这个"test1"文件可能是一个简单的Action类或者一个配置文件,它展示了如何设置和调用一个基本的Struts2 Action。学习这个例子可以帮助你理解Struts2的工作原理,包括Action的生命周期、配置文件的结构、以及如何与...
本篇将通过一个简单的入门例子,带你了解并掌握Struts2的核心概念和基本用法。 首先,我们需要理解MVC模式。在MVC模式中,模型(Model)负责处理业务逻辑,视图(View)负责展示数据,而控制器(Controller)则负责...
这篇入门级教程将帮助初学者理解Struts2的基本概念和工作原理。 在Struts2中,HelloWorld程序是一个标准的起点,它展示了框架的基本配置和控制器的工作方式。首先,我们需要在项目中添加Struts2的依赖库,这通常...