JSP转码方式与敏感字

//首先在WebRoot/WEB-INF文件夹下新建一个.properties后缀的文件写入你要过滤的敏感字

//name   value

//傻逼     **

//自己新建一个 类  继承HttpServletRequestWrapper

package com.hr.util;

import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.Properties;
import java.util.Set;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;

public class MyRequest extends HttpServletRequestWrapper{

    public MyRequest(HttpServletRequest request) {
        super(request);
        // TODO Auto-generated constructor stub
    }

    @Override
    public String getParameter(String name) {
        String method=this.getMethod();
        String str=null;
        if("post".equalsIgnoreCase(method)){
            try {
                super.setCharacterEncoding("UTF-8");
                str=super.getParameter(name);
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }else if("get".equalsIgnoreCase(method)){
            str=super.getParameter(name);
            try {
                str=new String(str.getBytes("iso-8859-1"),"UTF-8");
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
        //如何得到properties对象
        Properties p=new Properties();
        //找到文件 读取webRoot下面的文件需要使用application(ServletContext)对象
        ServletContext application=this.getSession().getServletContext();
        //获得指定文件的数据流
        InputStream is=application.getResourceAsStream("WEB-INF/str.properties");
        try {
            //使用属性文件对象读取properties文件中的全部内容
            p.load(is);
            //遍历所有的properties中的key
            Set<Object> keys=p.keySet();
            //再通过foreach获得所有的值
            for (Object obj : keys) {
                String key=(String)obj;
                String value=p.getProperty(key);
//                System.out.println(key+"--"+value);
                //如果接收到的字符串中包含了敏感字
                if(str.indexOf(key)!=-1){
                    str=str.replace(key, value);
                }
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        return str;
    }
    
    @Override
    public String[] getParameterValues(String name) {
        String strs[]=super.getParameterValues(name);
        for (int i = 0; i < strs.length; i++) {
            try {
                strs[i]=new String(strs[i].getBytes("iso-8859-1"),"UTF-8");
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return strs;
    }
}



//过滤器代码

ServletRequest request, ServletResponse response把这两个强转成功

HttpServletRequest req=(HttpServletRequest)request;
 HttpServletResponse res=(HttpServletResponse)response;

//对响应的编码进行设置
        res.setContentType("text/html;charset=UTF-8");

//调用自定义类,转型后的req给它

MyRequest mr=new MyRequest(req);

//放行

chain.doFilter(mr, res);


//servlet 代码 

public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
//调用doPost的方法
        doPost(request, response);
    }

    
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

       //以doPost的方式提交

    }



//XML的配置


<filter>
    <filter-name>过滤器名字</filter-name>
    <filter-class>过滤器路径</filter-class>
</filter>

<filter-mapping>
    <filter-name>过滤器名字</filter-name>
    <url-pattern>/*</url-pattern>//      /*代表过滤全部
</filter-mapping>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT界的渣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值