❶ jsp防止直接通過url訪問沒有許可權的頁面
jsp防止直接通過url訪問是通過過濾器實現的。
過濾器內容:
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
String conString = "";
conString = req.getHeader("REFERER");//獲取父url--如果不是直接輸入的話就是先前的訪問過來的頁面,要是用戶輸入了,這個父url是不存在的
if("".equals(conString) || null==conString){ //判斷如空森果上一個目錄為空斗兆畝的話,說明是用戶直接輸入url訪問的
String servletPath = req.getServletPath();//當前請求url,去掉幾個可以直接訪問的頁面
if(servletPath.contains("index.jsp") || servletPath.contains("admin/login.jsp")){ //跳過index.jsp和登陸Login.jsp
chain.doFilter(request, response);
} else {
resp.sendRedirect("/ejuornal/index.jsp");//跳回首頁
}
} else {
chain.doFilter(request, response);
}
}
過濾器配置:
<猜姿?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>FilterPages</filter-name>
<filter-class>com.ejuornal.filter.FilterPages</filter-class>
</filter>
<filter-mapping>
<filter-name>FilterPages</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
</web-app>
❷ JSP過濾器這樣設置過濾一個次級路徑下的所有URL
/sites/*這樣就可以了,如果這個文件夾是某個子目錄的話還需要添加它的父目錄;
下面內是些例子
<url-pattern>:指定和過濾器關聯容的URL,為」/*」表示所有URL;
例子1:單個過濾器配置:容器將其應用於所有接收的請求
<url-pattern>/*</url-pattern>
例子2:過濾器應用到特定目錄或資源(文件)的配置:此容器只有在接收到對/mydocs目錄中的資源的請求時才會應用該過濾器。
<url-pattern>/mydocs/*</url-pattern>
❸ 在Eclipse中如何設置JSP的過濾器呢
在web.xml中加入
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>這里填你的打專包路屬徑.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
❹ jsp中添加過濾器
1.首先建一個類(例charset.java),該類實現Filter介面
package com; //com包
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 charset implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
//方法拷貝過來即可
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
2.在工程WebRoot/WEB-INIF/web.xml配置文件中寫入以下代碼:
<filter>
<filter-name>名字(可自定義)</filter-name>
<filter-class>類名</filter-class>
</filter>
<filter-mapping>
<filter-name>同上</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
❺ jsp 過濾器攔截URL時,如何把URL後面參數加上求答案
最近在做項目中,發現jsp的過濾器在獲取到攔截的URL時,得到的URL沒有加入URL後面的參數,這樣就造成在用response.sendRedirect時,無法加入後面的參數,本人研究後,發現可以這么解決,希望對大家有所幫助<pString currentURL = req.getRequestURI(); // 取得根目錄所對應的絕對路徑: java.util.Enumeration enumParam = req.getParameterNames(); StringBuffer condition = new StringBuffer("?"); boolean isHasCondition = false; while(enumParam.hasMoreElements()){ isHasCondition = true; String paramName = enumParam.nextElement(); condition.append(paramName); condition.append("="); condition.append(request.getParameter(paramName)); condition.append("&"); } if(isHasCondition){ currentURL += condition.toString(); }</p<p </p<p </p
❻ jsp 中的過濾器怎麼應用
過濾器本質上還有一個Servlet...Servlet中可以使用的東西過濾器上都實用
過濾器可以攔截請求和響應...
可以在請求到達真正的Servlet之前對數據進行處理 用處的話簡單一點的可以對數據進行驗證什麼的
還可以攔截響應也就是reponse,對響應流進行修改...這個書上寫的是 對響應流進行修改是Servlet中最復雜的操作之一....所以沒仔細看
❼ 在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過濾器的作用是什麼用它有什麼好處
過濾器是一個對象,可以傳輸請求或修改響應。它可以在請求到達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;