Ⅰ Java Web 中的過濾器如何使用
您的意思說是只過濾第一個jsp嗎?
如果是那樣的話
在web.xml這樣配置就可以了:
<filter>
<filter-name>過濾器的名稱(Filter1)</filter-name>
<filter-class>ask_answer.Filter1</filter-class>
</filter>
<filter-mapping>
<filter-name>filter1</filter-name>
<url-pattern>/這里加上您要過濾的jsp網頁名稱</url-pattern>
</filter-mapping>
Ⅱ java web登陸狀態過濾器 圖片也被攔截了,怎麼辦
在過濾器中添加代碼String uri = request.getRequestURI();
過濾uri後綴是.js,.css的不進行校驗就好了,另外一種方法則相反,判斷你要的後綴,然後過濾,其他的都放行
Ⅲ java-web頁面繞過過濾器的問題
你這個代碼有點簡單了.可以用一個框架 叫shiro,它裡面的邏輯是很完整的,我忘記具體代碼怎麼寫的了,但是你注銷之後是否重定向到登錄頁面了呢
Ⅳ java web 項目 添加登陸過濾器後,出現「此網頁包含重定向循環」問題
對啊 過濾器實現的就是過濾當前請求,否則重定向循環
java學習小組,希望可以一起學習進步,Java框架平台研發 378 437 335
Ⅳ 如何用java過濾器是不要把login.jsp頁面也過濾掉
|public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest hrequest = (HttpServletRequest) request;
String uri = hrequest.getRequestURI();得到請求地址
String file[] = uri.split("/");通過/分隔,這樣,數組的最後一個值,就是頁面,
你比較下file[file.lenght-1].equals("login.jsp")就可以了。版
if(file[file.lenght-1].equals("login.jsp"||)){}要解除某頁權面的過濾,用||在if裡面添加就可以
chain.doFilter(request, response);
}
為了讓層次跟清晰一點,最好還是分文件夾。
Ⅵ java web 過濾器跟攔截器的區別和使用
java web 過濾器跟攔截器的區別和使用分別介紹如下:
1、過濾器的使用
Filter主要對客戶端的請求和伺服器的響應進行過濾,使用場景:
客戶端的請求到達伺服器,伺服器真正開始處理這個請求之前,要經過Filter的過濾
伺服器真正的處理完這個請求,生成響應之後,要經過Filter的過濾,才能將響應發送給客戶端
作用:可以通過Filter技術,對web伺服器管理的所有web資源,例如JSP、Servlet、靜態圖片文件或靜態 html文件等進行攔截,從而實現一些特殊的功能。例如實現URL級別的許可權訪問控制、過濾敏感詞彙、壓縮響應信息等一些高級功能。
配置Filter
同開發Servlet一樣,寫完了類,接下來就是配置了,我們需要在web.xml文件中配置Filter。具體的配置和Servlet配置如出一轍。
<filter>
<filter-name>log</filter-name>
<filter-class>com.jellythink.practise.LogFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>log</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
上面配置中比較重要的就是url-pattern和dispatcher了。
過濾類:
public class LogFilter implements Filter
{
private FilterConfig config;
public void init(FilterConfig config)
{
this.config = config;
}
public void destroy()
{
this.config = null;
}
// 這個方法是Filter的核心方法
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException
{
// 對用戶的請求進行處理
ServletContext context = this.config.getServletContext();
long begin = System.currentTimeMillis();
// 輸出過濾信息
System.out.println("開始過濾...");
HttpServletRequest hRequest = (HttpServletRequest)request;
System.out.println("Filter已經截獲到用戶請求的地址:" + hRequest.getServletPath());
// 處理完以後,將請求交給下一個Filter或者Servlet處理
chain.doFilter(request, response);
// 對伺服器的響應進行處理
long end = System.currentTimeMillis();
System.out.println("過濾結束");
System.out.println("請求被定為到:" + hRequest.getRequestURI() + "; 所花費的時間為:" + (end - begin));
}
}
2、攔截器的使用:
攔截器的主要作用是攔截用戶的請求並進行相應的處理。比如通過它來進行許可權驗證,或者是來判斷用戶是否登陸,或者是像12306那樣子判斷當前時間是否是購票時間。
1.在SpringMVC的配置文件中加上支持MVC的schema
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation=" http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"
下面是聲明示例:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
這樣在SpringMVC的配置文件中就可以使用mvc標簽了,mvc標簽中有一個mvc:interceptors是用於聲明SpringMVC的攔截器的。
Ⅶ javaweb項目配置了登陸過濾器後,tomcat經常假死
把過濾器代碼放上來看一看..不然你看下session的超時時間是多少?在過濾器裡面把日誌加上,看一看伺服器狀態.
Ⅷ 關於JAVA WEB中登陸過濾器的問題
你先把過濾器new出來,再調用不就好了
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=gbk");
PrintWriter out = response.getWriter();
String name = request.getParameter("username");
String password = request.getParameter("password");
HttpSession session = request.getSession();
if(name.equals("admain") && password.equals("admain")){
session.setAttribute("usertype", "admain");
Fileter f=new Fileter();
f.doFilter(request,response,chain);//反正你先把過濾器new出來,再調用不就好了,具體的屬性看實際情況,我是手寫代碼,難免有錯
}else{
out.print("<a href=Admain.html>用戶頁面</a>");
}
}
Ⅸ java web登錄後的各種請求在瀏覽器地址不變,過濾器該怎樣攔截每次的請求
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest)request;
if(req.getSession().getAttribute("user")==null){
req.setAttribute("error", "請你先登錄");
//非法請求才會進到這裡面,在這里保存請求的url地址,在成功登錄後再進行跳轉
req.getSession().setAttribute("goUrl", req.getRequestURL()+"?"+ req.getQueryString());
request.getRequestDispatcher("/ulogin.jsp").forward(request, response);
}
else{
chain.doFilter(request, response);
}
}
上面的代碼是過濾器中的代碼
下面的是servlet中的代碼
if(request.getSession().getAttribute("goUrl")!=null){
String url = (String)request.getSession().getAttribute("goUrl");
response.sendRedirect(url);
}
else{
response.sendRedirect("/webshopping/index.jsp");
}
Ⅹ java web項目中過濾器的使用(過濾器執行多次)
圖片中顯示的log是執行一次的。
不是本來就打開login.jsp嗎,不用再跳轉到login.jsp,不是的時候,再跳轉。