java web curd_javaweb综合项目:CRUD

packagecom.gton.curd.fileter;import javax.servlet.*;importjavax.servlet.annotation.WebFilter;importjavax.servlet.annotation.WebInitParam;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletRequestWrapper;importjavax.servlet.http.HttpServletResponse;importjava.io.IOException;importjava.io.UnsupportedEncodingException;importjava.util.Map;/*** @program: javaweb-demo

* @description:过滤器

*@author: GuoTong

* @create: 2020-09-17 14:07

**/

//所有的字符编码都需要统一,所以这里用全部

@WebFilter(value = "/*",initParams ={

@WebInitParam(name="code",value = "UTF-8")

})public class TestFilter implementsFilter {/** 拦截路径

1. 精确拦截`/user-servlet`

2. 通配符`/*`表示拦截所有资源`/user/*`拦截`/user`这个路径下的所有资源

3. 通配符`*.jsp`表示拦截所有以`.jsp`结尾的资源*/

private String code; //保存字符编码的类型

@Overridepublic void init(FilterConfig filterConfig) throwsServletException {//读取web.xml||注解 中Filter配置的初始化參数

code = filterConfig.getInitParameter("code");

}/*实现过滤的方法:

*servletRequest:请求

* servletResponse:响应

* filterChain: 根据条件放行*/@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throwsIOException, ServletException {//处理请求乱码

HttpServletRequest httpServletRequest =(HttpServletRequest) request;

HttpServletRequest myRequest= newMyRequest(httpServletRequest);//处理响应乱码

response.setContentType("text/html;charset=utf-8");

chain.doFilter(myRequest, response);

}

@Overridepublic voiddestroy() {

}

}//自定义request对象

class MyRequest extendsHttpServletRequestWrapper {privateHttpServletRequest request;private booleanhasEncode;publicMyRequest(HttpServletRequest request) {super(request);//super必须写

this.request =request;

}//对需要增强方法 进行覆盖

@OverridepublicMap getParameterMap() {//先获得请求方式

String method =request.getMethod();if (method.equalsIgnoreCase("post")) {//post请求

try{//处理post乱码

request.setCharacterEncoding("utf-8");returnrequest.getParameterMap();

}catch(UnsupportedEncodingException e) {

e.printStackTrace();

}

}else if (method.equalsIgnoreCase("get")) {//get请求

Map parameterMap =request.getParameterMap();if (!hasEncode) { //确保get手动编码逻辑只运行一次

for(String parameterName : parameterMap.keySet()) {

String[] values=parameterMap.get(parameterName);if (values != null) {for (int i = 0; i < values.length; i++) {try{//处理get乱码

values[i] = newString(values[i]

.getBytes("ISO-8859-1"), "utf-8");

}catch(UnsupportedEncodingException e) {

e.printStackTrace();

}

}

}

}

hasEncode= true;

}returnparameterMap;

}return super.getParameterMap();

}

@OverridepublicString getParameter(String name) {

Map parameterMap =getParameterMap();

String[] values=parameterMap.get(name);if (values == null) {return null;

}return values[0]; //取回参数的第一个值

}

@OverridepublicString[] getParameterValues(String name) {

Map parameterMap =getParameterMap();

String[] values=parameterMap.get(name);returnvalues;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值