实现html标签转义功能
package cn.itcast.web.decorator;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
//对HttpServletRequest对象包装/装饰
public class MyRequest extends HttpServletRequestWrapper{
//HttpServletRequestWrapper是适配器
//HttpServletRequestWrapper已经重写了request的所有方法,只不过是空方法,继承这个类既不用自己重写很多方法又能让自定义的类继承于request
private HttpServletRequest request;
public MyRequest(HttpServletRequest request) {
super(request); //继承后必须的操作 可以不管
this.request = request;
}
//重写父类的方法
public String getParameter(String name) {//表单项的名字
String value = null;
//取得客户端的请求方式[GET/POST]
String method = request.getMethod(); //返回的必须是大写的
if("GET".equals(method)){
try {
value = request.getParameter(name);//乱码
byte[] buf = value.getBytes("ISO8859-1");
value = new String(buf,"UTF-8");//正码
} catch (Exception e) {
e.printStackTrace();
}
}else if("POST".equals(method)){
try {
request.setCharacterEncoding("UTF-8");
value = request.getParameter(name);//正码
} catch (Exception e) {
e.printStackTrace();
}
}
value = filter(value);
return value;
}
//转义方法
public String filter(String message) {
if (message == null)
return (null);
char content[] = new char[message.length()];
message.getChars(0, message.length(), content, 0);
StringBuffer result = new StringBuffer(content.length + 50);
for (int i = 0; i < content.length; i++) {
switch (content[i]) {
case '<':
result.append("<");
break;
case '>':
result.append(">");
break;
case '&':
result.append("&");
break;
case '"':
result.append(""");
break;
default:
result.append(content[i]);
}
}
return (result.toString());
}
}