structs通过filter来转义html标签
来源:互联网 发布:mac安装win10怎么分区 编辑:程序博客网 时间:2024/05/17 21:15
研究了一天多,终于写出了一个完整版的过滤htmltag的程序
- package filter;
- import java.io.IOException;
- import javax.servlet.ServletException;
- import javax.servlet.http.*;
- import javax.servlet.Filter;
- import javax.servlet.FilterChain;
- import javax.servlet.FilterConfig;
- import javax.servlet.ServletRequest;
- import javax.servlet.ServletResponse;
- import filter.MyRequestWrapper;
- public class HtmlTagFilter implements Filter{
- private FilterConfig filterConfig;
- //private String onErrorUrl;
- public void init(FilterConfig filterConfig) throws ServletException
- {
- //this.filterConfig = filterConfig;
- //onErrorUrl=filterConfig.getInitParameter("onError");
- /*if (onErrorUrl==null || "".equals(onErrorUrl))
- {
- onErrorUrl="/pages/index.jsp";
- }*/
- }
- public void doFilter(ServletRequest request, ServletResponse response, FilterChain next)
- throws IOException,ServletException
- {
- HttpServletRequest httpRequest = (HttpServletRequest)request;
- HttpServletResponse httpResponse=(HttpServletResponse)response;
- HttpSession httpSession = httpRequest.getSession();
- //HashMap m=new HashMap(request.getParameterMap());
- //if (hasHtmlTag(m))
- //{
- MyRequestWrapper wrapRequest=new MyRequestWrapper(httpRequest);
- next.doFilter(wrapRequest, httpResponse);
- //}
- /*else{
- next.doFilter(request, response);
- }*/
- }
- /*private boolean hasHtmlTag(HashMap m){
- Iterator iter = m.entrySet().iterator();
- String val = "";
- while(iter.hasNext()){
- Map.Entry entry = (Map.Entry)iter.next();
- Object obj = entry.getValue();
- if(obj instanceof String[]){
- String[] strs = (String[])obj;
- for(int i=0;i<strs.length;i++){
- val+=strs[i];
- }
- }else{
- val = obj.toString();
- }
- }
- //val = html2Text(val);
- return true;
- }*/
- public void destroy()
- {
- //this.filterConfig = null;
- }
- }
- package filter;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.regex.Pattern;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletRequestWrapper;
- public class MyRequestWrapper extends HttpServletRequestWrapper {
- private Map pattributes = new HashMap();
- public MyRequestWrapper(HttpServletRequest arg0) {
- super(arg0);
- this.pattributes.putAll(getParameterMap());
- }
- public String getParameter(String name) {
- Object v = pattributes.get(name);
- String val = "";
- if (v == null)
- val = null;
- else if(v instanceof String[]){
- String[] strs = (String[])v;
- for(int i=0;i<strs.length;i++){
- val+=strs[i];
- }
- }
- else{
- val = v.toString();
- }
- return htmlFilter(val);
- }
- public void setParameter(String name, String value) {
- this.pattributes.put(name, value);
- }
- private String delHtmlTag(String inputString) {
- String htmlStr = inputString;
- String textStr ="";
- java.util.regex.Pattern p_script;
- java.util.regex.Matcher m_script;
- java.util.regex.Pattern p_style;
- java.util.regex.Matcher m_style;
- java.util.regex.Pattern p_html;
- java.util.regex.Matcher m_html;
- try {
- String regEx_script = "<[//s]*?script[^>]*?>[//s//S]*?<[//s]*?///[//s]*?script[//s]*?>";
- String regEx_style = "<[//s]*?style[^>]*?>[//s//S]*?<[//s]*?///[//s]*?style[//s]*?>";
- String regEx_html = "<[^>]+>";
- p_script = Pattern.compile(regEx_script,Pattern.CASE_INSENSITIVE);
- m_script = p_script.matcher(htmlStr);
- htmlStr = m_script.replaceAll("");
- p_style = Pattern.compile(regEx_style,Pattern.CASE_INSENSITIVE);
- m_style = p_style.matcher(htmlStr);
- htmlStr = m_style.replaceAll("");
- p_html = Pattern.compile(regEx_html,Pattern.CASE_INSENSITIVE);
- m_html = p_html.matcher(htmlStr);
- htmlStr = m_html.replaceAll("");
- textStr = htmlStr;
- }catch(Exception e) {
- System.err.println("Html2Text: " + e.getMessage());
- }
- return textStr;
- }
- private String htmlFilter(String value) {
- if ((value == null) || (value.length() == 0)) {
- return value;
- }
- StringBuffer result = null;
- String filtered = null;
- for (int i = 0; i < value.length(); i++) {
- filtered = null;
- switch (value.charAt(i)) {
- case '<':
- filtered = "<";
- break;
- case '>':
- filtered = ">";
- break;
- case '&':
- filtered = "&";
- break;
- case '"':
- filtered = """;
- break;
- case '/'':
- filtered = "'";
- break;
- }
- if (result == null) {
- if (filtered != null) {
- result = new StringBuffer(value.length() + 50);
- if (i > 0) {
- result.append(value.substring(0, i));
- }
- result.append(filtered);
- }
- } else {
- if (filtered == null) {
- result.append(value.charAt(i));
- } else {
- result.append(filtered);
- }
- }
- }
- return (result == null) ? value : result.toString();
- }
- }
- structs通过filter来转义html标签
- structs html 标签
- Structs - 标签库(HTML)- -
- structs - 标签库(html)
- html标签转义表
- java转义HTML标签
- HTML标签转义问题
- js转义html标签
- 转义HTML标签
- html标签 后台转义
- HTML标签转义
- html标签转义和反转义
- 使用Structs标签处理带有html标签元素的字符串
- jstl转义显示html标签
- php中转义html标签
- html转义标签的开发
- 简单的html标签转义
- html页面标签转义解决
- 【转帖】对PassThru中的Protocol.c的注释
- 为什么说虚函数的效率低
- shell写的进度指示
- 【转帖】扩展微软DDK中的NDIS IM驱动的功能:添加一个DeviceIoControl接口
- 30岁之职业生涯
- structs通过filter来转义html标签
- 解决JSP网站基于数据库的用户权限分配
- FckEditor中文配置手册详细说明
- MyEclipse生成的Spring+Hibernate无法保存数据问题的解决方法
- 【转帖】 扩展PassThru驱动:两个实现IP过滤的NDIS IM驱动
- 调度框架Quartz快速入门
- Pass Arrays Between vc++ and vb
- 一站集成叫板平台交易:朗格里拉偷袭阿里巴巴
- UDP穿透NAT的原理与实现(UDP“打洞”原理)