1. 程式人生 > >tomcat class nofound,spring mvc的get請求亂碼處理

tomcat class nofound,spring mvc的get請求亂碼處理

tomcat常見問題

一、maven中classnotfound
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-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>

    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請求亂碼處理