導航:首頁 > 凈水問答 > spring字元集過濾器

spring字元集過濾器

發布時間:2022-08-30 07:12:30

❶ 為什麼使用了SPRING 過濾器還會出現中文亂碼

MVC的過濾器如果優先於spring的編碼過濾器就會出現亂碼情況 需要將spring的編碼過濾器優先等級提高

❷ spring mvc Controller 接受中文編程了UTF-8字元串,怎麼處理

CharacterEncodingFilter只對POST請求有用,GET請求的需要對你運行的tomcat
目錄conf/server.xml文件中
<Connector
connectionTimeout="20000"
port="8080"
protocol="HTTP/1.1"
redirectPort="8443"/>
改為:
<Connector
connectionTimeout="20000"
port="8080"
protocol="HTTP/1.1"
redirectPort="8443"
useBodyEncodingForURI="true"/>
這是tomcat的原因造成的,tomcat默認的編碼是iso-8859-1。不是大家常用的utf-8.很是蛋疼。
換句話說,get請求是對資源的訪問,資源我一般不會涉及中文路徑(最好不要)
post
針對於數據的提交,所以你如果是表單,最好用post請求。

❸ springmvc4基於java config怎麼配置字元過濾器

http://hanqunfeng.iteye.com/blog/2114967

❹ spring過濾器和攔截器的區別和聯系

1、首先要明確什麼是攔截器、什麼是過濾器
1.1 什麼是攔截器:
攔截器,在AOP(Aspect-Oriented Programming)中用於在某個方法或欄位被訪問之前,進行攔截然後在之前或之後加入某些操作。攔截是AOP的一種實現策略。
在Webwork的中文文檔的解釋為——攔截器是動態攔截Action調用的對象。它提供了一種機制可以使開發者可以定義在一個action執行的前後執行的代碼,也可以在一個action執行前阻止其執行。同時也是提供了一種可以提取action中可重用的部分的方式。
談到攔截器,還有一個詞大家應該知道——攔截器鏈(Interceptor Chain,在Struts2中稱為攔截器棧 Interceptor Stack)。攔截器鏈就是將攔截器按一定的順序聯結成一條鏈。在訪問被攔截的方法或欄位時,攔截器鏈中的攔截器就會按其之前定義的順序被調用。
1.2. 攔截器的實現原理:
大部分時候,攔截器方法都是通過代理的方式來調用的。Struts2的攔截器實現相對簡單。當請求到達Struts2的ServletDispatcher時,Struts 2會查找配置文件,並根據其配置實例化相對的攔截器對象,然後串成一個列表(list),最後一個一個地調用列表中的攔截器。
1.3 什麼是過濾器
過濾器是一個程序,它先於與之相關的servlet或JSP頁面運行在伺服器上。過濾器可附加到一個或多個servlet或JSP頁面上,並且可以檢查進入這些資源的請求信息。在這之後,過濾器可以作如下的選擇:
①以常規的方式調用資源(即,調用servlet或JSP頁面)。
②利用修改過的請求信息調用資源。
③調用資源,但在發送響應到客戶機前對其進行修改。
④阻止該資源調用,代之以轉到其他的資源,返回一個特定的狀態代碼或生成替換輸出。

1.4 Servlet過濾器的基本原理
在Servlet作為過濾器使用時,它可以對客戶的請求進行處理。處理完成後,它會交給下一個過濾器處理,這樣,客戶的請求在過濾鏈里逐個處理,直到請求發送到目標為止。例如,某網站里有提交「修改的注冊信息」的網頁,當用戶填寫完修改信息並提交後,伺服器在進行處理時需要做兩項工作:判斷客戶端的會話是否有效;對提交的數據進行統一編碼。這兩項工作可以在由兩個過濾器組成的過濾鏈里進行處理。當過濾器處理成功後,把提交的數據發送到最終目標;如果過濾器處理不成功,將把視圖派發到指定的錯誤頁面。

2、攔截器與過濾器的區別 :
1. 攔截器是基於java的反射機制的,而過濾器是基於函數回調。
2. 攔截器不依賴與servlet容器,過濾器依賴與servlet容器。
3. 攔截器只能對action請求起作用,而過濾器則可以對幾乎所有的請求起作用。
4. 攔截器可以訪問action上下文、值棧里的對象,而過濾器不能訪問。
5. 在action的生命周期中,攔截器可以多次被調用,而過濾器只能在容器初始化時被調用一次

攔截器的代碼實現(以struts2為例):
1、在xml文件中如何定義攔截器
<interceptors>
<interceptor name="filterIPInterceptor"
class="com.xxxx.web.FilterIPActionInterceptor" />
<interceptor-stack name="filterIPStack">
<interceptor-ref name="defaultStack" />

<interceptor-ref name="filterIPInterceptor" />
</interceptor-stack>
</interceptors>

2、怎麼遍別寫自定義攔截器

public class FilterIPActionInterceptor extends AbstractInterceptor
{
/** 日誌控制. */
private final Log log = LogFactory.getLog(getClass());

/**
* @see com.opensymphony.xwork2.interceptor.AbstractInterceptor#intercept(com.opensymphony.xwork2.ActionInvocation)
*/
@Override
@SuppressWarnings("unchecked")
public String intercept(ActionInvocation invocation) throws Exception
{
String result = null;
// 獲得當前方法名.
String methodName = invocation.getInvocationContext().getName();
String currIp = null;
try
{
if (invocation.getAction() instanceof PortletAction)
{
PortletAction action = (PortletAction) invocation.getAction();
currIp = action.getRequest().getRemoteAddr();
}
String ip = ApplicationResource.getHotValue("ALLOW_CACHE_IP");

if (StringUtils.isBlank(ip) || StringUtils.isBlank(currIp))
{
log.error("允許刷新的IP不存在或當前請求的IP非法.");
throw new NoAllowIPException();
}
else
{
String[] ips = ip.split(",");
boolean errorIp = true;
for (String s : ips)
{
if (s.equals(currIp))
errorIp = false;
}
// 判斷IP
if (errorIp)
throw new NoAllowIPException();
}
result = invocation.invoke();//調用被攔截的方法
}
catch (Exception e)
{
log.error("異常類名:" + invocation.getAction().getClass());
log.error("異常方法:" + methodName, e);
throw e;
}

return result;
}

}

3、怎麼編寫過濾器

1、在web.xml裡面配置自定義的攔截器
<filter>
<filter-name>Redirect Filter</filter-name>
<filter-class>com.xx.filter.RedirectFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>Redirect Filter</filter-name>
<url-pattern>/xx/xx/*</url-pattern>

</filter-mapping>

2、如何編寫自定義的攔截器
public class RedirectFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) throws IOException, ServletException {
// 獲取URL
Long startTime = null;
if (log.isDebugEnabled())
{
startTime = System.currentTimeMillis();
}
HttpServletRequest httpRequest = (HttpServletRequest) request;
String url = httpRequest.getRequestURL().toString();
if (url == null || url.trim().length() == 0) {
return;
}
if (url.indexOf(luceneCreateMapping) != -1
|| url.indexOf(luceneSearchMapping) != -1) {
doFilterForxxx(request, response, url);
} else {
doxxxx(request, response, url);
}
if (log.isDebugEnabled())
{
long endTime = System.currentTimeMillis();
Thread currentThread = Thread.currentThread();
String threadName = currentThread.getName();
log.debug("[" + threadName + "]" + "< "
+ this.getClass().getName() + " " + url + " "
+ (endTime - startTime) + " ms");
}
// 激活下一個Filter
filterChain.doFilter(request, response);

}
}

❺ 如何搭建spring mvc框架

1.創建一個maven webapp工程。
2.修改WEB-INF目錄下的web.xml文件:
內容如下,文中有注釋

[html] view plain print?
<?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_3_0.xsd"
version="3.0">
<display-name>Archetype Created Web Application</display-name>

<!-- spring MVC的核心就是DispatcherServlet,使用springMVC的第一步就是將下面的servlet放入web.xml
servlet-name屬性非常重要,默認情況下,DispatchServlet會載入這個名字-servlet.xml的文件,如下,就會載入
dispather-servlet.xml,也是在WEN-INF目錄下。
-->
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 設置dispatchservlet的匹配模式,通過把dispatchservlet映射到/,默認servlet會處理所有的請求,包括靜態資源 -->
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

<!-- 字元集過濾器 -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

</web-app>

說明:其中字元集過濾器部分不是必須的,但是如果要處理中文的話,最好還是加上。

3.在WEN-INF目錄下創建dispatcher-servlet.xml
內容如下,文中有注釋。

[html] view plain print?
<?xml version="1.0" encoding="UTF-8"?>
<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"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd"
default-lazy-init="true">

<!-- 通過mvc:resources設置靜態資源,這樣servlet就會處理這些靜態資源,而不通過控制器 -->
<!-- 設置不過濾內容,比如:css,jquery,img 等資源文件 -->
<mvc:resources location="/*.html" mapping="/**.html" />
<mvc:resources location="/css/*" mapping="/css/**" />
<mvc:resources location="/js/*" mapping="/js/**" />
<mvc:resources location="/images/*" mapping="/images/**" />

<!-- 添加註解驅動 -->
<mvc:annotation-driven />
<!-- 默認掃描的包路徑 -->
<context:component-scan base-package="com.my.web" />

<!-- mvc:view-controller可以在不需要Controller處理request的情況,轉向到設置的View -->
<!-- 像下面這樣設置,如果請求為/,則不通過controller,而直接解析為/index.jsp -->
<mvc:view-controller path="/" view-name="index" />
<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
<!-- 配置jsp路徑前綴 -->
<property name="prefix" value="/"></property>
<!-- 配置URl後綴 -->
<property name="suffix" value=".jsp"></property>
</bean>

</beans>
說明: 其中<!-- 默認掃描的包路徑 -->
<context:component-scan base-package="com.my.web" />中的路徑,com.my.web,是需要在src/main/java中創建的包,用來放Java代碼。

4.使用maven引入SpringMVC所依賴的jar包。
修改pom.xml文件
4.1添加屬性,在<project>標簽中
[html] view plain print?
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>3.1.2.RELEASE</spring.version>
</properties>

4.2添加依賴,在<dependencies>標簽中

[html] view plain print?
<!-- spring begin -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- spring end -->

添加完成之後,通過更新工程,就會自動引入所依賴的jar包。

做完上面的准備工作之後就可以寫代碼了。
5.寫前台頁面:
在maven工程中生成的有一個index.jsp,將其修改成一下內容,很簡單,只是一個登陸框,提交一個form表單,中的用戶名和密碼。

[html] view plain print?
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>歡迎</title>
</head>
<body>
<h2>Hello World!</h2>

<form action="login">
用戶名:<input id="username" name="username" type="text"></input><br>
密 碼:<input id="username" name="password" type="password"></input><br>
<input type="submit">
</form>
<span>當前IP:<%=request.getRemoteAddr() %></span>
</body>
</html>

6.寫controller層代碼,用來響應前台請求。

[java] view plain print?
package com.my.web.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

/**
* TODO 控制層代碼
* @author 591791
* @date 2014年11月27日
*/
@Controller
public class MyController {

@RequestMapping("login") //用來處理前台的login請求
private @ResponseBody String hello(
@RequestParam(value = "username", required = false)String username,
@RequestParam(value = "password", required = false)String password
){
return "Hello "+username+",Your password is: "+password;

}

}

❻ vsphere web client網頁文字亂碼的問題怎麼解決

修改資料庫字元集:確定資料庫的字元集,在MySQL安裝的時候,可以配置MySQL的字元集,如果最好是選擇UTF-8存儲
或者直接修改MySQL配置文件my.ini

修改頁面字元集:如果資料庫字元集沒有亂碼問題,則檢查我們寫的JSP頁面,是否加入了pageEncoding="UTF-8",
以及在head標簽裡面,metadata裡面配置屬性contentType=text/html;charset=UTF-8

配置字元過濾器:web.xml配置spring字元集過濾器或者自定義過濾器為UTF-8

4
配置WEB伺服器字元集:最後還有亂碼,則修改tomcat配置文件server.xml 之connector標簽,添加屬性URIEncoding="UTF-8"

❼ web.xml中關於spring字元集過濾器

默認為false

❽ SpringMVC的攔截器和過濾器的區別與聯系

攔截器 :是在面向切面編程的就是在你的service或者一個方法,前調用一個方法,或者在方法後調用一個方法比如動態代理就是攔截器的簡單實現,在你調用方法前列印出字元串(或者做其它業務邏輯的操作),也可以在你調用方法後列印出字元串,甚至在你拋出異常的時候做業務邏輯的操作。
過濾器:是在javaweb中,你傳入的request、response提前過濾掉一些信息,或者提前設置一些參數,然後再傳入servlet或者struts的action進行業務邏輯,比如過濾掉非法url(不是login.do的地址請求,如果用戶沒有登陸都過濾掉),或者在傳入servlet或者 struts的action前統一設置字元集,或者去除掉一些非法字元.。

❾ spring過濾器和攔截器的區別

過濾器和攔截器的區別:

①攔截器是基於java的反射機制的,而過濾內器是基於函數回調。

②攔容截器不依賴與servlet容器,過濾器依賴與servlet容器。

③攔截器只能對action請求起作用,而過濾器則可以對幾乎所有的請求起作用。

④攔截器可以訪問action上下文、值棧里的對象,而過濾器不能訪問。

⑤在action的生命周期中,攔截器可以多次被調用,而過濾器只能在容器初始化時被調用一次。

⑥攔截器可以獲取IOC容器中的各個bean,而過濾器就不行,這點很重要,在攔截器里注入一個service,可以調用業務邏輯。

❿ spring中怎麼實現過濾器和監聽器

1、延遲載入過濾器

Hibernate 允許對關聯對象、屬性進行延遲載入,但是必須保證延遲載入的操作限於同一個 Hibernate Session 范圍之內進行。如果 Service 層返回一個啟用了延遲載入功能的領域對象給 Web 層,當 Web 層訪問到那些需要延遲載入的數據時,由於載入領域對象的 Hibernate Session 已經關閉,這些導致延遲載入數據的訪問異常。

Spring 為此專門提供了一個 OpenSessionInViewFilter 過濾器,它的主要功能是使每個請求過程綁定一個 Hibernate Session,即使最初的事務已經完成了,也可以在 Web 層進行延遲載入的操作。

<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>

2、亂碼過濾器

對post亂碼的處理,如下

<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter①Spring編輯過濾器
</filter-class>
<init-param>②編碼方式
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>③強制進行編碼轉換
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>②過濾器的匹配URL
<filter-name>encodingFilter</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>

3、請求跟蹤日誌過濾器

程度調試者可以詳細地查看到有哪些請求被調用,請求的參數是什麼,請求是否正確返回等信息,需要將log4j設為debug

org.springframework.web.filter.: 該過濾器將請求的 URI 記錄到 Common 日誌中


4、WebAppRootListener

可以將 Web 應用根目錄添加到系統參數中,對應的屬性名可以通過名為「webAppRootKey」的 Servlet 上下文參數指定,默認為「webapp.root」,配置如下

<context-param>
<param-name>webAppRootKey</param-name>
<param-value>baobaotao.root</param-value>①Web應用根目錄以該屬性名添加到系統參數中
</context-param>

②負責將Web應用根目錄以webAppRootKey上下文參數指定的屬性名添加到系統參數中
<listener>
<listener-class>
org.springframework.web.util.WebAppRootListener
</listener-class>
</listener>

5、Log4jConfigListener監聽器

包括了 WebAppRootListener 的功能,也就是說,Log4jConfigListener 會自動完成將 Web 應用根目錄以 webAppRootKey 上下文參數指定的屬性名添加到系統參數中,在log4j.xml可以直接使用


6、Introspector 緩存清除監聽器

負責處理由 JavaBean Introspector 功能而引起的緩存泄露。IntrospectorCleanupListener 監聽器在 Web 應用關閉的時會負責清除 JavaBean Introspector 的緩存,在 web.xml 中注冊這個監聽器可以保證在 Web 應用關閉的時候釋放與其相關的 ClassLoader 的緩存和類引用。

閱讀全文

與spring字元集過濾器相關的資料

熱點內容
川崎空調濾芯在哪裡 瀏覽:408
普通活性污泥法污水處理水廠 瀏覽:647
福田瑞沃貨車空調濾芯怎麼換 瀏覽:203
河南污水池聚脲多少錢 瀏覽:476
純水加什麼導電 瀏覽:174
家用反滲透機不啟動怎麼辦 瀏覽:778
飲水機有異味用什麼了清洗 瀏覽:529
飲水機接水小怎麼辦 瀏覽:867
偉業飲水機怎麼樣 瀏覽:179
純水機怎麼清洗最干凈 瀏覽:912
菱帥怎麼換空調濾芯 瀏覽:68
反滲透膜存在問題 瀏覽:764
道爾頓凈水器為什麼不用純水 瀏覽:281
陶氏反滲透膜殼廠家 瀏覽:302
安全監理細則污水處理廠 瀏覽:370
三菱飲水機管線式怎麼樣 瀏覽:294
世界凈水器什麼牌子最好 瀏覽:644
weka如何過濾數據 瀏覽:463
鋁件拋光廢水為什麼起泡 瀏覽:127
醫用小型蒸餾水機跳閘 瀏覽:578