最近做了个一个项目,需要配置权限访问,就随便网上查了下资料,总结了下,这三种常用配置方式。首先明白这点filter主要拦截url地址,interceptor拦截访问的action。
一、jsp 配置filter 过滤器,
(1)配置过滤器,过滤url地址
web.xml 中配置
<!-- 配置过滤器,控制jsp目录下的访问权限 -->
<filter>
<filter-name>perimission filter</filter-name>
<filter-class>
com.flower.filter.PermissionFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>perimission filter</filter-name>
<url-pattern>/jsp/*</url-pattern>
</filter-mapping>
filter配置如下
package com.flower.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* 配置filter过滤器,判断用户是否登陆,没有登陆跳转到index.jsp
* @author Administrator
*
*/
public class PermissionFilter implements Filter{
public void destroy() {
}
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request=(HttpServletRequest) arg0;
HttpSession session=request.getSession();
HttpServletResponse response=(HttpServletResponse) arg1;
//判断后台是否登陆,如果没登陆跳转到index.jsp
if(session.getAttribute("falgAdmin")==null||((Integer)session.getAttribute("falgAdmin")!=2)){
System.out.println("用户未登陆,跳转到index.jsp");
response.sendRedirect(request.getContextPath());
return ;
}
System.out.println("用户登陆");
chain.doFilter(arg0, arg1); //如果登陆直接向下执行
}
public void init(FilterConfig filterConfig) throws ServletException {
}
}
(2)、配置字符过滤器
web.xml 配置如下
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>com.test.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
filter配置如下
package com.test.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class CharacterEncodingFilter implements Filter {
protected FilterConfig filterConfig = null;
protected String encoding = "";
public void destroy() {
filterConfig = null;
encoding = null;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) throws IOException, ServletException {
if (encoding != null) {
//设置request和response的编程格式,注意两个都要设,若没设response的
//charset,则在输出页面会显示乱码。
request.setCharacterEncoding(this.encoding);
response.setContentType("text/html;charset=utf-8");
}
//继续执行下一个过滤器
filterChain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
}
}
二、struts配置interceptor
struts.xml配置如下
<!-- 定义一个权限拦截器 authorityInterceptor -->
<interceptors>
<interceptor name="authorityInterceptor" class="com.flower.interceptor.AuthorityInterceptor"></interceptor>
<!-- 定义一个拦截器栈-->
<interceptor-stack name="mydefault">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="authorityInterceptor"></interceptor-ref>
</interceptor-stack>
</interceptors>
<global-results>
<result name="none">/login.jsp</result>
</global-results>
interceptor配置如下
package com.flower.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ServletRequestAware;
import com.flower.model.User;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
/**
* ll
* @author Administrator
*
*/
public class AuthorityInterceptor extends AbstractInterceptor{
@Override
public String intercept(ActionInvocation actionInvocation) throws Exception {
HttpSession session=ServletActionContext.getRequest().getSession();
User user=(User)session.getAttribute("user");
if(user!=null){
System.out.println("action:用登陆");
return actionInvocation.invoke(); //继续往下执行interceptor或者action
}else{
return Action.NONE; //globle 与全局访问结果集对应,拦截,返回指定页面
}
}
}
分享到:
相关推荐
综上所述,Struts2的Interceptor与Filter虽然在功能上有一定的重叠,但各自的侧重点、实现机制和配置方式存在显著差异。Filter作为Servlet规范的一部分,提供了广泛的请求处理能力,而Interceptor则更专注于Struts2...
Struts2和Hibernate是Java开发中两个非常重要的框架,它们分别负责表现层和持久层的管理。Struts2是一款基于MVC(Model-View-Controller)设计模式的Web应用框架,而Hibernate则是一个对象关系映射(ORM)工具,用于...
- **Struts2配置与使用**:掌握Struts2的配置文件编写方法,以及如何通过Action、Interceptor等组件实现业务逻辑处理。 - **Struts2高级特性**:探索Struts2与其他技术(如Spring、Hibernate)的集成方式,以及...
此外,还需要在web.xml中配置过滤器,以启动Struts2和Spring的DispatcherServlet。 简略的使用说明可能包含以下步骤: 1. 设置项目环境,导入所有必需的jar包。 2. 配置Struts2的struts.xml,定义Action和结果页面...
Struts2和Hibernate是两种非常流行的开源框架,分别在MVC(Model-View-Controller)架构和对象关系映射(ORM)领域有着广泛的应用。在Java Web开发中,它们的整合能够提供强大的功能,帮助开发者更高效地构建复杂的...
Struts2和Hibernate是两种非常重要的Java Web开发框架,它们分别负责表现层和持久层的管理。本实例结合这两种技术,旨在提供一个完整的Web应用程序开发示例,帮助开发者理解和掌握它们的核心功能。 Struts2是一个...
需要添加 Struts 2 相关的依赖,并在 web.xml 中配置 Struts 2 的前端控制器(Filter)。 2. **集成 Spring**: 在 Struts 2 的配置文件(struts.xml)中,使用 Spring Action 插件来创建 Action 对象。同时,在 ...
本篇文章详细介绍了如何构建一个基于Spring、Struts2和MyBatis的技术栈来开发Web应用程序。通过合理的配置,可以有效地将这三个框架集成在一起,实现高效、可扩展的应用程序开发。希望这些知识点能够帮助开发者更好...
7. **Web.xml**:Servlet容器的部署描述符,配置了Struts2的前端控制器DispatcherServlet以及其他的Servlet和Filter。 解压这个项目后,你可能需要做如下步骤来运行和测试: 1. **导入项目到IDE**:如Eclipse、...
整合这三个框架时,需要在web.xml中配置DispatcherServlet和Filter,设置Struts2的前端控制器,以及Spring的ApplicationContext监听器。然后在Spring配置文件中定义Bean,包括Action、Service、DAO等,并配置...
- 配置web.xml:添加Struts2和Spring的监听器和过滤器,如`org.springframework.web.context.ContextLoaderListener`和`org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter`。 - 使用Spring...
Spring还提供了大量的模块,如Spring MVC、Spring JDBC、Spring ORM,可以与Struts2和iBatis无缝集成。 整合这三个框架,开发者可以利用Struts2进行前端请求的路由和控制,iBatis处理数据库交互,Spring负责对象...
- 添加Struts2的Filter配置,用于拦截所有请求并进行处理。 ```xml <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</...
在本案例中,我们看到一个使用Ext JS 2.2进行登录实现的方法,结合了Struts2和JSON来处理用户输入和响应。以下是这个登录方法的详细解释: 1. **依赖库**: - `Commons-logging-1.0.4.jar`: Apache Commons ...
在名为“struts2_basic”的压缩包文件中,可能包含了一些基础的Struts2项目配置和示例代码,比如Struts2的配置文件(struts.xml),Action类的实现,以及相关的JSP页面。这些资源可以帮助初学者理解如何将Bootstrap、...
7. **拦截器(Interceptor)**:Struts2中的拦截器可以实现请求预处理和后处理,如权限检查、日志记录等。 8. **Filter(过滤器)**:在请求进入Struts2之前进行预处理,如字符编码转换、安全过滤等。 学习这个整合...
- struts2-convention-plugin:自动配置插件,根据类名和方法名生成Action配置。 - struts2-json-plugin:支持JSON格式的响应。 - struts2-dojo-plugin:提供Dojo库支持,用于前端交互。 - struts2-spring-...
Struts2负责处理Web请求,Spring则关注于业务逻辑的组织和管理,而Hibernate专注于对象和数据库之间的映射。这三大框架相互配合,可以极大地提高开发效率,同时也使得项目结构更加清晰、易于维护。
正确理解和配置这两个文件对于开发高效、健壮的Struts2应用至关重要。在实际项目中,你可能需要根据业务需求进行更复杂的配置,如国际化、数据校验、主题等。熟练掌握这些配置能够帮助开发者更好地控制应用程序的...
Struts2是一个强大的MVC(Model-View-...实际的"struts001"案例会结合这些概念,通过具体的代码和配置展示如何构建一个简单的Struts2应用。如果要深入学习,建议结合提供的链接文章和其他相关资源进行实践操作。