package com.tongtech.bjvsp.sysmng.filter;
import java.io.IOException;
import java.io.PrintWriter;
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.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.tongtech.bjvsp.sysmng.constant.ConstantServlet;
public class EncodingFilter extends HttpServlet implements Filter {
private FilterConfig filterConfig;
// Handle the passed-in FilterConfig
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}
// Process the request/response pair
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) {
try {
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
boolean isValid = true;
String uriStr = httpRequest.getRequestURI();
if (uriStr.indexOf(".jsp") == -1 && uriStr.indexOf(".do") == -1) {
isValid = true;
} else if (uriStr.indexOf("login.jsp") == -1 && uriStr.indexOf("login.do") == -1
&& httpRequest.getSession().getAttribute("UserWraper") == null) {
isValid = false;
}
if (isValid) {
request.setCharacterEncoding("GBK");
filterChain.doFilter(request, response);
}
else {
request.setCharacterEncoding("GBK");
PrintWriter out = httpResponse.getWriter();
if( uriStr.indexOf("index.jsp") == -1 ) {
out.write("<script>window.parent.parent.location.href='../../login.jsp'</script>");
} else {
out.write("<script>window.parent.parent.location.href='../login.jsp'</script>");
}
}
} catch (ServletException sx) {
filterConfig.getServletContext().log(sx.getMessage());
} catch (IOException iox) {
filterConfig.getServletContext().log(iox.getMessage());
}
}
// Clean up resources
public void destroy() {
}
}
分享到:
相关推荐
JSP过滤器是基于Servlet规范的Filter接口实现的,它可以拦截请求,对请求和响应进行预处理或后处理。在`web.xml`配置文件中,我们定义一个filter和filter-mapping,指定过滤器的类和需要拦截的URL模式。 ```xml ...
通过这种方式,过滤器不仅可以解决中文乱码问题,还可以作为预防性措施,防止不安全的数据进入系统。 总结来说,JSP中的中文乱码问题可以通过设定请求的字符编码来解决,而过滤器提供了一种全局、高效的方式来处理...
7. **数据校验与异常处理**:在用户提交数据时,可能会进行输入验证,防止非法数据进入系统。同时,项目应有良好的异常处理机制,当出现错误时能给出友好提示,保证系统的稳定运行。 8. **部署与运行**:项目通常会...
5. **权限控制**:通过Filter实现不同角色对系统的访问权限限制,保护敏感信息不被非法访问。 6. **异常处理**:为防止程序运行时出现错误,需要设置全局异常处理,保证系统稳定运行。 项目中的"Graduation Design...
以下是一个简单的JSP页面,展示了如何使用JSP创建Filter内存马。虽然实际操作中可能涉及到更复杂的反射和安全绕过,但这个例子能说明基本思路: ```jsp ; charset=UTF-8" pageEncoding="UTF-8"%> ...
本文将详细介绍如何使用过滤器(Filter)在JSP中有效地防止XSS攻击。 首先,我们需要了解XSS攻击的基本原理。当用户在Web表单中输入数据,这些数据未经适当的验证和编码直接显示在页面上时,攻击者可以通过注入恶意...
2. **使用Filter**:编写或使用现成的Servlet Filter,阻止对.jsp文件的直接访问。 3. **使用MIME类型**:设置JSP文件的MIME类型为`application/x-java-jsp`或`application/octet-stream`,防止浏览器试图解析它们。...
7. **安全与权限控制**:为保证系统的安全性,需要实施权限控制,如防止非法用户访问试题库,保护用户隐私等。这可以通过JSP的内置对象`request`、`session`和`application`,结合Servlet的过滤器(Filter)实现。 ...
4. **预编译语句**:使用PreparedStatement防止SQL注入,提高效率,例如`PreparedStatement pstmt = conn.prepareStatement("INSERT INTO Orders (order_id, customer_id) VALUES (?, ?)")`。 **三、订单管理功能**...
- **数据校验**:检查请求参数的有效性,防止非法输入。 - **安全控制**:限制对某些资源的访问,比如实现登录检查。 - **字符编码转换**:确保请求和响应的编码一致,避免乱码问题。 - **性能优化**:如GZIP...
### jsp防止跨域提交数据的具体实现 #### 概述 跨域问题一直是Web开发中的一个常见问题。当用户浏览器发起请求时,由于同源策略的限制,不同域名下的资源不能互相访问。为了保证网站安全,JSP项目也需要考虑如何...
在这个框架中,过滤器(Filter)扮演着关键角色,它们负责在请求到达实际处理之前进行预处理,或者在响应发送给客户端之后进行后处理。本示例中的“通用过滤器filter”是专门为Struts2设计的,用于增强应用的安全性...
- 在JSP中,可以通过过滤器(Filter)和会话管理来限制非法访问和保护敏感信息。 6. **项目结构** - 一个典型的银行系统项目可能包含多个JSP文件,分别对应不同的页面(如登录、注册、账户详情、转账等)。 - ...
通过以上介绍,我们可以看到,在JSP开发过程中采取合适的措施可以有效地防止SQL注入攻击。其中最重要的是使用预编译语句,其次是做好输入验证和数据过滤。此外,合理的数据库权限设置也是必不可少的一环。只有全方位...
一种常见的实现非法登录验证的方法是在Web应用中设置过滤器(Filter)。通过配置特定的过滤器,可以在请求到达目标资源之前进行检查,判断当前用户是否已经经过认证。如果未经过认证,则重定向到登录页面或其他指定...
4. 权限控制:验证用户身份,防止非法投票和重复投票。 5. 系统管理:后台管理界面,供管理员添加、修改投票主题,查看投票详情等。 五、安全性与优化 - 使用HTTPS协议保障数据传输安全。 - 对用户输入进行校验,...
4. **Captcha组件**:`jcaptcha组件jar包`可能指的是JCaptcha,一个开源的验证码库,用于防止自动化的机器人或者恶意软件对网站进行非法操作。它生成和验证随机图像验证码,以确保用户是人类。 5. **其他实用工具库...
安全性方面,系统可能采用了session和cookie来管理用户的登录状态,防止非法访问。同时,对于敏感操作如修改密码、删除数据等,通常会采用验证码或二次确认机制来增加安全性。 此外,系统可能还包含了错误处理和...
- 使用过滤器(Filter)来拦截和处理非法的目录访问请求。 6. **示例代码** ```jsp *" %> File dir = new File("public_files"); String[] files = dir.list(); for (String file : files) { out.println...
例如,可以使用Filter实现用户登录验证,对非法请求进行拦截,或者对发送的数据进行加密处理,提高安全性。 **四、中文处理** 在JSP中处理中文字符是一项常见的挑战,因为不同的字符集可能导致乱码问题。在JSP聊天...