tomcat class nofound,spring mvc的get請求亂碼處理
阿新 • • 發佈:2018-05-02
tomcat常見問題一、maven中classnotfound
1.其實是jar包問題,maven默認會把jar包編譯到target下面,而tomcat需要在WEB-INF目錄下使用它,所以發現沒有的問題
需要在pom.xml中配置
<plugin> <param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
1.其實是jar包問題,maven默認會把jar包編譯到target下面,而tomcat需要在WEB-INF目錄下使用它,所以發現沒有的問題
需要在pom.xml中配置
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source> <target>1.6</target> <encoding>UTF-8</encoding> <compilerArguments> <extdirs>src\main\webapp\WEB-INF\lib</extdirs> </compilerArguments>
</configuration>
</plugin>
二、解決springmvc的get亂碼問題
1.post處理亂碼是這樣的
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<async-supported>true</async-supported>
<init-param>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2.get亂碼處理 public class EncodingFilter extends OncePerRequestFilter { private String encoding; public void setEncoding(String encoding) { this.encoding = encoding; } @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException { // 設置請求響應字符編碼 request.setCharacterEncoding(encoding); response.setCharacterEncoding(encoding); // 傳遞給目標servlet或jsp的實際上是動態代理的對象,而不是原始的HttpServletRequest對象 request = (HttpServletRequest) Proxy.newProxyInstance(request.getClass().getClassLoader(), request.getClass().getInterfaces(), new MyInvacationHandler(request)); chain.doFilter(request, response); } class MyInvacationHandler implements InvocationHandler{ private HttpServletRequest request; MyInvacationHandler(HttpServletRequest request){ this.request=request; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { switch (method.getName()) { case "getParameter": String value = request.getParameter((String)args[0]); try { if(value != null){ value=new String(value.getBytes("ISO-8859-1"),encoding); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return value; case "getParameterValues": String[] values = request.getParameterValues((String)args[0]); if (values != null) { for (int i = 0; i < values.length; i++) { try { values[i] = new String(values[i].getBytes("ISO-8859-1"),encoding); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } } return values; default: return method.invoke(request, args); } } }
}
web.xml配置
<filter>
<filter-name>encodingFilter12</filter-name>
<filter-class>com.wjw.controller.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter12</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
tomcat class nofound,spring mvc的get請求亂碼處理