Ⅰ jsP過濾器的作用是什麼用它有什麼好處
過濾器是一個對象,可以傳輸請求或修改響應。它可以在請求到達Servlet/JSP之前對其進行預處理,而且能夠在響應離開Servlet/JSP之後對其進行後處理。所以如果你有幾個Servlet/JSP需要執行同樣的數據轉換或頁面處理的話,你就可以寫一個過濾器類,然後在部署描述文件(web.xml)中把該過濾器與對應的Servlet/JSP聯系起來。你可以一個過濾器以作用於一個或一組servlet,零個或多個過濾器能過濾一個或多個servlet。一個過濾器實現java.servlet.Filter介面並定義它的三個方法:1. void init(FilterConfig config) throws ServletException:在過濾器執行service前被調用,以設置過濾器的配置對象。2. void destroy();在過濾器執行service後被調用。3. Void doFilter(ServletRequest req,ServletResponse res,FilterChain chain) throws IOException,ServletException;
Ⅱ 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
}
}
Ⅲ 在JSP中如何利用過濾器實現從SQL表中登錄
jsp中實現過濾器登錄的方法是配置filter:
在servlet中實現代碼如下:
HttpSession
session
=
request.getSession(false);
User
user
=
(session
!=
null)
?
session.getAttribute("user")
:
null;
if
(user
!=
null)
{
chain.doFilter(request,
response);
}
else
{
response.sendRedirect(request.getContextPath()
+
"消掘/login");
}
jsp頁面提交後到驗證servlet:
String
username
=
request.getParameter("username");
String
password
=
request.getParameter("password");
Map<String,
String>
messages
=
new
HashMap<String,
String>();
if
(username
==
null
||
username.isEmpty())
{
messages.put("username",
"灶殲Please
enter
username");
}
if
(password
==
null
||
password.isEmpty())
{
messages.put("password",
"拿辯核Please
enter
password");
}
if
(messages.isEmpty())
{
User
user
=
userService.find(username,
password);
if
(user
!=
null)
{
request.getSession().setAttribute("user",
user);
response.sendRedirect(request.getContextPath()
+
"/home");
return;
}
else
{
messages.put("login",
"Unknown
login,
please
try
again");
}
}
request.setAttribute("messages",
messages);
request.getRequestDispatcher("/WEB-INF/login.jsp").forward(request,
response);
Ⅳ JSP中用filter 過濾某個包中的所有servlet
Filter開發分為二個步驟:1.編寫java類實現Filter介面,並實現其doFilter方法。2.在web.xml文件中使用和元素對編寫的filter類進行注冊,並設置它所能攔截的資源。Filter鏈在一個web應用中,可以開發編寫多個Filter,這些Filter組合起來稱之為一個Filter鏈。web伺服器根據Filter在web.xml文件中的注冊順序,決定先調用哪個Filter,當第一個Filter的doFilter方法被調用時,web伺服器會創建一個代表Filter鏈的FilterChain對象傳遞給該方法。在doFilter方法中,開發人員如果調用了FilterChain對象的doFilter方法,則web伺服器會檢查FilterChain對象中是否還有filter,如果有,則調用第2個filter,如果沒有,則調用目標資源。Filter鏈實驗(查看filterChainAPI文檔)Filter的部署-注冊FiltertestFitlerorg.test.TestFiterword_file/WEB-INF/word.txt1.用於為過濾器指定一個名字,該元素的內容不能為空。2.元素用於指定過濾器的完整的限定類名。3.元素用於為過濾器指定初始化參數,它的子元素指定參數的名字,指定參數的值。在過濾器中,可以使用FilterConfig介面對象來訪問初始化參數。元素用於設置一個Filter所負責攔截的資源。一個Filter攔截的資源可通過兩種方式來指定:Servlet名稱和資源訪問的請求路徑子元素用於設置filter的注冊名稱。該值必須是在元素中聲明過的過濾器的名字設置filter所攔截的請求路徑(過濾器關聯的URL樣式)指定過濾器所攔截的Servlet名稱。指定過濾器所攔截的資源被Servlet容器調用的方式,可以是REQUEST,INCLUDE,FORWARD和ERROR之一,默認REQUEST。用戶可以設置多個子元素用來指定Filter對資源的多種調用方式進行攔截。子元素可以設置的值及其意義:REQUEST:當用戶直接訪問頁面時,Web容器將會調用過濾器。如果目標資源是通過RequestDispatcher的include()或forward()方法訪問時,那麼該過濾器就不會被調用。INCLUDE:如果目標資源是通過RequestDispatcher的include()方法訪問時,那麼該過濾器將被調用。除此之外,該過濾器不會被調用。FORWARD:如果目標資源是通過RequestDispatcher的forward()方法訪問時,那麼該過濾器將被調用,除此之外,該過濾器不會被調用。ERROR:如果目標資源是通過聲明式異常處理機制調用時,那麼該過濾器將被調用。除此之外,過濾器不會被調用。Tip:Filter的部署—映射Filter示例:testFilter/test.jsptestFilter/index.jspREQUESTFORWARDFilterConfig介面:用戶在配置filter時,可以使用為filter配置一些初始化參數,當web容器實例化Filter對象,調用其init方法時,會把封裝了filter初始化參數的filterConfig對象傳遞進來。因此開發人員在編寫filter時,通過filterConfig對象的方法,就可獲得:StringgetFilterName():得到filter的名稱。StringgetInitParameter(Stringname):返回在部署描述中指定名稱的初始化參數的值。如果不存在返回null.():返回過濾器的所有初始化參數的名字的枚舉集合。():返回Servlet上下文對象的引用。
Ⅳ jsp用過濾器解決中文亂碼問題的方法
定義一過濾器,實現Filtter介面
public
class
EncodingFilter
implements
Filter
{
@Override
public
void
destroy()
{
//
TODO
Auto-generated
method
stub
}
@Override
public
void
doFilter(ServletRequest
req,
ServletResponse
resp,
FilterChain
chain)
throws
IOException,
ServletException
{
//
TODO
Auto-generated
method
stub
HttpServletRequest
request=(HttpServletRequest)req;
HttpServletResponse
response=(HttpServletResponse)resp;
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
chain.doFilter(req,
resp);
}
@Override
public
void
init(FilterConfig
filterConfig)
throws
ServletException
{
//
TODO
Auto-generated
method
stub
}
}
web.xml文件中,配置過濾器
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>pers.filter.EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
以上這篇jsp用過濾器解決中文亂碼問題的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。