- 浏览: 1525149 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (516)
- Java (49)
- Java/Struts 2.0 (25)
- Java/Spring、Spring MVC (11)
- Java/Quartz (3)
- Java/Lucene (6)
- Java/Hibernate (19)
- Java/openJPA (7)
- Java/DWR (7)
- Java/Security、Spring Security/OAuth2 (6)
- Java/Threading (9)
- Java/XML (22)
- java/design pattern (4)
- Android (2)
- JavaScript (46)
- jquery (3)
- DB/MySQL (23)
- DB/Oracle (16)
- PHP (25)
- CSS (20)
- Linux (38)
- C/C++、DLL、Makefile、VC++ (31)
- 正则 (9)
- Eclipse (4)
- 安全、网络等概念 (25)
- 集群 (7)
- 网页 (5)
- 视频\音频 (1)
- HTML (6)
- 计算机数学/算法 (3)
- Virtualbox (1)
- LDAP (2)
- 数据挖掘 (6)
- 工具破解 (1)
- 其他 (13)
- Mail (1)
- 药材 (3)
- 游戏 (2)
- hadoop (13)
- 压力测试 (3)
- 设计模式 (3)
- java/Swing (2)
- 缓存/Memcache (0)
- 缓存/Redis (1)
- OSGI (2)
- OSGI/Gemini (0)
- 文档写作 (0)
- java/Servlet (3)
- MQ/RabbitMQ (2)
- MQ/RocketMQ (0)
- MQ/Kafka (1)
- maven (0)
- SYS/linux (1)
- cache/redis (1)
- DB/Mongodb (2)
- nginx (1)
- postman (1)
- 操作系统/ubuntu (1)
- golang (1)
- dubbo (1)
- 技术管理岗位 (0)
- mybatis-plus (0)
最新评论
-
pgx89112:
大神,请赐我一份这个示例的项目代码吧,万分感谢,1530259 ...
spring的rabbitmq配置 -
string2020:
不使用增强器 怎么弄?
OpenJPA的增强器 -
孟江波:
学习了,楼主,能否提供一份源代码啊,学习一下,十分感谢!!!4 ...
spring的rabbitmq配置 -
eachgray:
...
spring-data-redis配置事务 -
qljoeli:
学习了,楼主,能否提供一份源代码啊,学习一下,十分感谢!!!1 ...
spring的rabbitmq配置
1、使用cookie自动登陆的拦截器(IMemberAware.java):
/** * */ package com.web.struts.inteceptor; import com.model.Member; /** * @author Administrator * */ public interface IMemberAware { public Member getMember(); public void setMember(Member member); }
/** * */ package com.web.struts.inteceptor; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.commons.lang.StringUtils; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; import com.model.Member; import com.service.IMemberService; import com.tools.Constant; /** * title:会员cookie自动登陆 * * @author Administrator * @时间 2009-4-24:下午03:42:25 */ public class MemberCookieLoginInterceptor extends AbstractInterceptor { private Member member; private IMemberService memberService; /** */ private static final long serialVersionUID = 6998551363568297012L; @SuppressWarnings("null") @Override public String intercept(ActionInvocation invocation) throws Exception { HttpServletRequest request = ServletActionContext.getRequest(); HttpSession session = request.getSession(); if (StringUtils.isBlank(username)) { Cookie[] cookies = request.getCookies(); Cookie member_cookie = null; if (cookies != null || cookies.length >= 0) { for (int i = 0; i < cookies.length; i++) { member_cookie = cookies[i]; if (member_cookie != null && StringUtils.isNotBlank(member_cookie.getName()) && StringUtils.isNotBlank(member_cookie.getValue()) && member_cookie.getName().equals( Constant.MEMBER_SESSION_ID)) { member = memberService.getMember(member_cookie .getValue()); if (member != null) { session.setAttribute(Constant.MEMBER_SESSION_ID, member_cookie.getValue()); } break; } else { member_cookie = null; } } } } return invocation.invoke(); } public Member getMember() { return member; } public void setMember(Member member) { this.member = member; } public void setMemberService(IMemberService memberService) { this.memberService = memberService; } }
3、会员管理面板的拦截器:
/** * */ package com.web.struts.inteceptor; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.commons.lang.StringUtils; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; import com.model.Member; import com.service.IMemberService; import com.tools.Constant; /** * title: 用户在线 * * @author conkeyn * @时间 2009-3-30:下午01:48:10 */ public class MemberOnlineInterceptor extends AbstractInterceptor { /** */ private static final long serialVersionUID = 2470845588966783260L; private Member member; private IMemberService memberService; @SuppressWarnings("null") @Override public String intercept(ActionInvocation invocation) throws Exception { HttpServletRequest request = ServletActionContext.getRequest(); HttpSession session = request.getSession(); String username = (String) session .getAttribute(Constant.MEMBER_SESSION_ID); if (StringUtils.isBlank(username)) { Cookie[] cookies = request.getCookies(); Cookie member_cookie = null; if (cookies != null || cookies.length >= 0) { for (int i = 0; i < cookies.length; i++) { member_cookie = cookies[i]; if (member_cookie != null && StringUtils.isNotBlank(member_cookie.getName()) && StringUtils.isNotBlank(member_cookie.getValue()) && member_cookie.getName().equals( Constant.MEMBER_SESSION_ID)) { member = memberService.getMember(member_cookie .getValue()); if (member != null) { session.setAttribute(Constant.MEMBER_SESSION_ID, member_cookie.getValue()); } break; } else { member_cookie = null; } } } } if (StringUtils.isBlank(username)) { return "global_login"; } else { System.out.println(invocation.getClass().getName()); if (invocation instanceof IMemberAware) { member = memberService.getMember(username); if (member != null) { ((IMemberAware) invocation).setMember(member); } } return invocation.invoke(); } } public Member getMember() { return member; } public void setMember(Member member) { this.member = member; } public void setMemberService(IMemberService memberService) { this.memberService = memberService; } }
4、相关配置文件:
1)spring配置方式:
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"> <beans> <bean id="memberOnlineInterceptor" class="com.web.struts.inteceptor.MemberOnlineInterceptor" scope="prototype"> <property name="memberService" ref="memberService" /> </bean> <bean id="memberCookieLoginInterceptor" class="com.web.struts.inteceptor.MemberCookieLoginInterceptor" scope="prototype"> <property name="memberService" ref="memberService" /> </bean> </beans>
2)struts配置方式:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd" > <struts> <include file="struts-manager.xml"></include> <include file="struts-manager-templ.xml"></include> <include file="struts-member.xml"></include> <include file="struts-client.xml"></include> <include file="struts-account.xml"></include> <package name="map_main" extends="struts-default"> <!-- 会员Cookie自动登陆 --> <interceptors> <!-- 权限拦截器 --> <interceptor name="MemberCookieLoginInterceptor" class="memberCookieLoginInterceptor" /> <interceptor-stack name="MemberCookieLogin"> <interceptor-ref name="MemberCookieLoginInterceptor" /> <interceptor-ref name="defaultStack" /> </interceptor-stack> </interceptors> <default-interceptor-ref name="MemberCookieLogin" /> </package> <package name="map_member" extends="map_main" namespace="/member"> <!-- 会员拦截器 --> <interceptors> <!-- 权限拦截器 --> <interceptor name="memberOn" class="memberOnlineInterceptor" /> <interceptor-stack name="memberOnline"> <interceptor-ref name="memberOn" /> <interceptor-ref name="defaultStack" /> </interceptor-stack> <interceptor-stack name="noneStack"></interceptor-stack> </interceptors> <default-interceptor-ref name="memberOnline" /> <global-results> <result name="global_login" type="redirectAction"> <param name="namespace">/</param> <param name="actionName">login</param> </result> </global-results> </package> </struts>
发表评论
-
Struts2 (Json) + jQuery 组合的简单用法
2011-03-01 23:02 10311、将struts2的json插件加入web工程的lib,js ... -
Struts2中$,#,%的区别
2011-03-01 22:57 1379转自:http://hi.baidu.com/di ... -
<s:generator>
2011-02-27 21:54 1421<s:generator val="%{'aa ... -
<s:merge>
2011-02-27 21:45 889<s:set var="americanCar ... -
<s:append>
2011-02-27 21:44 1248<s:set var="list1" ... -
<s:iterator>
2011-02-27 21:01 1391属性名称 必填项 默认值 ... -
<s:bean>
2011-02-27 18:32 950public class DegreeConverter { ... -
<s:param>
2011-02-27 18:21 3604param标签用来把一个参数传递给包含着它的那个标签。 不管 ... -
updownselect
2011-02-27 16:24 1398<s:updownselect name="c ... -
combobox
2011-02-27 16:08 958<s:combobox name="combo ... -
checkboxlist
2011-02-27 12:15 892ddd public class LoginAction ... -
select optgroup
2011-02-27 11:58 717代码片段: public class LoginAction ... -
select标签
2011-02-23 21:17 1019import com.opensymphony.xwork2. ... -
radio标签
2011-02-23 21:13 1009import java.util.SortedMap; ... -
list、listkey、listValue属性
2011-02-22 21:07 7252list、listKey、listValue属性对 ... -
Ongl 与 ValueStack ActionContext
2011-01-09 21:03 1475转自:http://blog.sina.com.c ... -
struts2.0的ognl表达式研究
2011-01-09 21:02 1036OGNL —— 完美的催化剂 为了解决数据从V ... -
关于Struts2.0 标签中采用%{} 的处理原理
2011-01-09 20:57 1591项目中采用struts2.0时,常常使用计算表单式的处理源码 ... -
struts2 tags
2010-01-08 13:22 12261.<s:property> propert ... -
Struts2和Freemarker整合应用批量静态页面的生成
2009-11-07 23:19 3856利用Struts2生成静态页面其实很灵活,很强大,尤其是利用S ...
相关推荐
实现登录拦截器的基本步骤如下: 1. **定义拦截器**:在Struts2中,我们需要创建一个实现了`com.opensymphony.xwork2.interceptor.Interceptor`接口的类。这个类将包含拦截逻辑,例如检查session中是否存在登录信息...
6. **退出登录**:同样,提供一个退出登录的功能,清除session中的用户信息,使得拦截器在后续请求中判断为未登录状态。 通过这个struts2-demo项目,我们可以实践这些概念,理解如何将拦截器与实际业务逻辑结合,...
当Action执行完成后,拦截器栈会按照相反的顺序退出。 至于标签中的“源码”和“工具”,这可能意味着你需要查看Struts2的源代码以深入了解其内部工作原理,同时利用IDE(如IntelliJ IDEA或Eclipse)进行开发和调试...
3. **退出**:Action执行完成后,再按逆序执行后置拦截器的`intercept()`方法。 ### 六、应用场景 1. **权限控制**:验证用户是否具有访问特定Action的权限。 2. **数据校验**:在Action执行前对用户提交的数据进行...
通过定义一系列拦截器并设置它们的执行顺序,你可以实现如日志记录、权限验证、性能监控等通用功能,而无需在每个Action中重复编写这些代码。 二、拦截器的结构与工作原理 1. 拦截器栈:Struts2中的拦截器不是单独...
每个拦截器都有一个进入(execute)方法和一个退出(returning)方法,当请求到达Action时,会按照拦截器栈的顺序逐个执行这些方法。 **三、拦截器的配置** 配置拦截器主要通过struts.xml配置文件进行。以下是一个...
Struts提供了ActionServlet和ActionForm类,可以在用户退出时清理相关数据,并结合Interceptor拦截器来控制页面流向。Struts的配置文件可以设定拦截器链,确保用户在未验证的情况下无法访问受保护的页面。 总的来说...
3. **配置Struts2拦截器**:定义一个拦截器,检查用户会话中的登录状态,如果未登录则重定向到登录页面。 4. **编写Ajax请求**:使用jQuery或者其他JavaScript库,发送异步请求到服务器,接收登录验证的响应。成功...
Struts2是一个强大的MVC(模型-视图-控制器)框架,它在Java Web开发中广泛应用,用于构建可维护、可扩展的Web应用程序。...在实践中,还可以结合拦截器、国际化、插件等特性,进一步提升应用的功能和性能。
在Android应用开发中,Activity是用户界面的基本组件,它负责展示屏幕上的交互元素并处理用户事件。当用户完成某个操作或者需要节省系统资源时,安全退出Activity是非常重要的。本篇文章将详细探讨多种安全退出...
每一个 Action 请求都在拦截器中,每一个 action 可以将操作转交给下面的拦截器,也可以直接退出到界面上。拦截器可以将请求传递给下一个拦截器或 action,也可以终止请求的执行。 4. 定义拦截器: 要定义拦截器,...
通过这个简单的用户登录案例,你可以学习到Struts如何处理HTTP请求、如何组织业务逻辑、以及如何与数据库交互等基本概念。同时,它也是进一步探索其他Java Web框架,如Spring MVC、JSF等的基础。在实际开发中,你还...
在这个"Struts2登录功能小练习"中,我们将深入探讨如何利用Struts2实现一个基本的用户登录系统。 首先,我们需要了解Struts2的核心组件和工作流程。Struts2框架通过拦截器机制处理HTTP请求,这些拦截器可以执行一...
4. **Interceptor(拦截器)**:Struts2的拦截器用于在Action执行前后进行额外的操作,如日志记录、权限检查等。对于登录功能,可能需要自定义拦截器来检查用户是否已经登录,未登录的话则重定向到登录页面。 5. **...
通过自定义拦截器,可以在用户尝试访问受保护的资源前检查其是否已登录。如果未登录,可以重定向到登录页面。 退出系统功能则是确保用户在完成操作后安全退出,这通常涉及清除session中的用户信息,以防止其他用户...
2. **Interceptor(拦截器)**:可以定义拦截器来处理通用的任务,如登录检查、权限验证等。 3. **Result配置**:定义Action执行后的跳转结果,可以是JSP页面、Freemarker模板或其他资源。 4. **数据访问**:通常...
6. **异常处理**:在S2SH框架中,可以使用Struts2的拦截器(Interceptor)来捕获和处理可能出现的异常,提供统一的错误页面或信息反馈给用户。 7. **前端界面**:虽然题目没有明确提及,但通常S2SH项目会配合JSP、...
2. **Struts2**:Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它简化了开发过程,提供了强大的拦截器机制,用于处理请求、验证输入、事务管理等。在注册和登录场景中,Struts2将处理用户...
Struts2的拦截器(Interceptor)可以在此发挥作用,通过检查用户的角色和权限,拦截并转发到相应的页面或返回错误信息。 5. **角色授权**:总经理作为高级角色,可能有权限对其他角色进行授权,修改其权限范围。这...