servlet過濾特殊字元
1. 求教:HttpServlet過濾全形字元
取每行數據,用indexOf() 方法判斷字元串是否 Define Class開頭,然後以空格符作為分隔符把字元串用 split()方法分割成數組, 返回一個串數組,那下標為2的數組就是你要的東西
2. 如何實現字元串中臟話的過濾
不管是JSP還是Servlet,其Filter過濾器都是一個東西。因為JSP的本質就是Servlet,只不過是被包裝了一下,成了標准,讓Web伺服器都遵循這個標准來解析編譯執行而已。 以下演示的就是在JSP中如何過濾臟話(Servlet的處理方式也差不多): 一、 過濾器類 package com.filter;import java.io.BufferedReader;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Set;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;public class WordsFilter implements Filter { private Map String, String>map = new HashMap String, String>(); //過濾器的初始化 public void init(FilterConfig config) throws ServletException { String filePath = config.getInitParameter("filePath");//從配置文件中取得文件的相對路徑 ServletContext context = config.getServletContext(); String realPath = context.getRealPath(filePath);//根據相對路徑取得絕對路徑 try { FileReader freader = new FileReader(realPath);//根據絕對路徑,通過文件流來讀取文件 BufferedReader br = new BufferedReader(freader); String line = null; while((line=br.readLine()) != null) { String []str = line.split("="); map.put(str[0], str[1]); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //亂碼處理 request.setCharacterEncoding("gb2312"); response.setContentType("text/html;charset=gb2312"); HttpServletRequest HttpReq = (HttpServletRequest) request; HttpReqWrapper hrw = new HttpReqWrapper(HttpReq); hrw.setMap(map); chain.doFilter(hrw, response); } public void destroy() { System.out.println("--過濾器的銷毀--"); } }二、請求包裝器
package com.filter;import java.util.Iterator;import java.util.Map;import java.util.Set;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletRequestWrapper;public class HttpReqWrapper extends HttpServletRequestWrapper { private Map String,String> map = null; public HttpReqWrapper(HttpServletRequest request) { super(request); } //過濾臟話 public String replace(String str){ StringBuffer sb = new StringBuffer(str); Setkeys = this.getMap().keySet(); Iteratorit = keys.iterator(); String ss = null; while(it.hasNext()) { String key = it.next(); int index = sb.indexOf(key); if(index != -1) { if(key != null) ss = key; sb.replace(index, index+key.length(), this.getMap().get(key)); } } if(ss!=null) { if (sb.toString().indexOf(ss) == -1) { return sb.toString(); } else { return replace(sb.toString()); } } return sb.toString(); }// 重寫getParameter()方法 public String getParameter(String str) { if(str.equals("pager.offset")){ return super.getParameter(str); }else{ String content = super.getParameter(str); return replace(content); } } public Map String,String> getMap() { return map; } public void setMap(Map String,String> map) { this.map = map; } }
三、臟話列表word.txt媽的=**
老子=**
狗日的=***
我日=我*
TMD=***
我靠=我*
賤人=**
滾=*
操=*
四、web.xml中配置過濾器
WordsFilter
com.filter.WordsFilter
filePath
/WEB-INF/word.txt
WordsFilter
/getNote.jsp
3. 抓取蘋果json數據,怎樣過濾特殊字元
packagecn.sdeit.servlet;
importjava.io.IOException;
importjava.io.PrintWriter;
importjava.sql.Connection;
importjava.sql.PreparedStatement;
importjava.sql.SQLException;
importjava.util.Calendar;
importjavax.servlet.ServletException;
importjavax.servlet.annotation.WebServlet;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importcn.sdeit.beans.Team;
importcn.sdeit.beans.User;
importcn.sdeit.mysql.ConnectMySql;
@WebServlet(name="BuildTeam",urlPatterns={"/BuildTeam"})
{
=1L;
publicBuildTeam()
{
();
}
protectedvoiddoPost(HttpServletRequestrequest,
HttpServletResponseresponse)throwsServletException,IOException
{
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html");
Teamteam=newTeam(request.getParameter("name"),
newInteger(request.getParameter("type")),
request.getParameter("words"),
((User)(request.getSession().getAttribute("oldUser"))).getEmail(),
"null","null","null","null","null",
"null","null",request.getParameter("teacher"),0,
Calendar.getInstance().get(Calendar.YEAR)
);
intresult=buildTeam(team);
if(result==0)
{
PrintWriterwriter=response.getWriter();
writer.write("抱歉!</br>創建團隊失敗!請核對資料後重試,若問題再次出現請聯系管理員反饋您的問題!");
writer.flush();
writer.close();
}
else
{
response.sendRedirect("mine.jsp");;
}
}
privateintbuildTeam(Teamteam)
{
/*
*createtableteam
*(namevarchar(64),
*typeint,
*wordsvarchar(256),
*member1varchar(24)defaultnull,
*member2varchar(24)defaultnull,
*member3varchar(24)defaultnull,
*member4varchar(24)defaultnull,
*member5varchar(24)defaultnull,
*member6varchar(24)defaultnull,
*filevarchar(128),
*rewardvarchar(64),
*teachervarchar(24),
*chargeint,
*yearint);
*/
Stringsql="insertintoteamvalues(?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
Connectionconnection=ConnectMySql.createConnection();
PreparedStatementprepared=ConnectMySql.createPreparedStatement(connection,sql);
intcode=0;
try
{
prepared.setString(1,team.getName());
prepared.setInt(2,team.getType());
prepared.setString(3,team.getWords());
prepared.setString(4,team.getMember1());
prepared.setString(5,team.getMember2());
prepared.setString(6,team.getMember3());
prepared.setString(7,team.getMember4());
prepared.setString(8,team.getMember5());
prepared.setString(9,team.getMember6());
prepared.setString(10,team.getFile());
prepared.setString(11,team.getReward());
prepared.setString(12,team.getTeacher());
prepared.setInt(13,team.getCharge());
prepared.setInt(14,team.getYear());
code=prepared.executeUpdate();
prepared.close();
connection.close();
}catch(SQLExceptione)
{
e.printStackTrace();
}
returncode;
}
}
4. java過濾特殊字元的問題
"+"在URL中會被當作空格處理。
必須使用URLEncoder將其變成URL編碼。
或者使用 javascript 的 encodeURIComponent(url) 函數對URL進行編碼轉換。
5. 在JAVA中輸入什麼代碼才能屏蔽非法字元
Java代碼 package com.zhangkai.Filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class FilterToWord implements Filter { //銷毀,當伺服器關閉的時候,也就destroy了。 @ public void destroy() { } //過濾 @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //首先拿到你輸入的字元 String content = request.getParameter("content"); //第二步,判斷一下拿到的值是不是空值 if (content != null) { //比如我們規定含有AAA的是非法字元 if (content.indexOf("AAA") == -1) { //如果不包含,則繼續往下操作 chain.doFilter(request, response); } else { //反之,就提示用戶,輸入有誤 System.out.println("有非法文字"); //如果有需要依然可以使用request.getRequestDispatcher跳轉 } } else { //如果是空值,則繼續操作 chain.doFilter(request, response); } } //初始化,伺服器一打開就init。 @Override public void init(FilterConfig arg0) throws ServletException { } }
6. javascript 怎樣過濾非法字元
你可以用過濾器來過過濾,jsp中的filter。
public class WordFilter implements Filter {
//寫自己的response
class MyResponse extends HttpServletResponseWrapper{
//放字元串的
private StringWriter sw = new StringWriter();
//1.這個構造是必須是,作用是把原來的傳進來進行替換
public MyResponse(HttpServletResponse arg0) {
super(arg0);
}
//2. 重寫方法
@Override
public PrintWriter getWriter() throws IOException {
return new PrintWriter(sw);
}
//3.重寫toString
@Override
public String toString() {
return sw.toString();
}
}
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
//替換自己的response
MyResponse response = new MyResponse((HttpServletResponse) arg1);
//讓自己的response通過
arg2.doFilter(arg0, response);
//得到自己的內容
String str = response.toString();
//改一改內容
str = str.replaceAll("sb", "s*");
str = str.replaceAll("王八蛋", "??");
//傳內容
response.getResponse().getOutputStream().print(str);
System.out.println("...");
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
7. java怎麼過濾掉小方塊的特殊字元
package com.jing.common; 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
8. jsp\java 如何編寫過濾器過濾特殊字元
package com.jing.common;
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.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class IllegalCharacterFilter implements Filter {
private String[] characterParams = null;
private boolean OK=true;
public void init(FilterConfig config) throws ServletException {
// if(config.getInitParameter("characterParams").length()<1)
// OK=false;
// else
// this.characterParams = config.getInitParameter("characterParams").split(",");
System.out.println("初始化");
}
@SuppressWarnings("unchecked")
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain arg2) throws IOException, ServletException {
HttpServletRequest servletrequest = (HttpServletRequest) request;
HttpServletResponse servletresponse = (HttpServletResponse) response;
String param = "";
String paramValue = "";
//設置請求編碼格式
servletresponse.setContentType("text/html");
servletresponse.setCharacterEncoding("UTF-8");
servletrequest.setCharacterEncoding("UTF-8");
java.util.Enumeration params = request.getParameterNames();
//循環讀取參數
while (params.hasMoreElements()){
param = (String) params.nextElement(); //獲取請求中的參數
String[] values = servletrequest.getParameterValues(param);//獲得每個參數對應的值
for (int i = 0; i < values.length; i++) {
paramValue = values[i];
//轉換目標字元變成對象字元,可以多個。後期擴展特殊字元庫用於管理
paramValue = paramValue.replaceAll("'","");
paramValue = paramValue.replaceAll("@","");
paramValue = paramValue.replaceAll("胡錦濤","***");
//這里還可以增加,如領導人 自動轉義成****,可以從資料庫中讀取非法關鍵字。
values[i] = paramValue;
}
//把轉義後的參數重新放回request中
request.setAttribute(param, paramValue);
}
//繼續向下 執行請求,如果有其他過濾器則執行過濾器
arg2.doFilter(request, response);
}
public void destroy() {
// TODO Auto-generated method stub
}
}