我在做url重写时遇到中文参数的问题<rule> <from>/products/([a-z]+)</from> <to>/products/index.jsp?product_name=$1</to> </rule>http://localhost/example/products/hello这样一点问题都没有但是要是这样就出错http://localhost/example/products/剥皮香蕉我想可能是这个配置的问题<from>/products/([a-z]+)</from>请教兄弟怎样把上面那句配置成支持中文,我先谢谢了,搞几天了搞不出来我很着急
我在做url重写时遇到中文参数的问题<rule> <from>/products/([a-z]+)</from> <to>/products/index.jsp?product_name=$1</to> </rule>http://localhost/example/products/hello这样一点问题都没有但是要是这样就出错http://localhost/example/products/剥皮香蕉我想可能是这个配置的问题<from>/products/([a-z]+)</from>请教兄弟怎样把上面那句配置成支持中文,我先谢谢了,搞几天了搞不出来我很着急
port="8088" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" URIEncoding="GBK" />-----------------------------------------------------------------
tomcat 是这样设置的, 就是加上一个URIEncoding="GBK"
确实需要传。需要改动tomcat里面的server.xml文件。给你抓了个参考:tomcat里的url中文参数问题一定要设置tomcat的server.xml文件
1) 打开tomcat的server.xml文件,找到区块,加入如下一行:
URIEncoding="UTF-8"
完整的应如下:
<Connector
port="80" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true"
URIEncoding="UTF-8"
/>
2)重启tomcat,就OK了。
执行如下jsp页页测试是否成功
tcnchar.jsp
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ page import="java.util.*"%>
<%
String q=request.getParameter("q");
q = q == null? "没有值" : q;
%>
<HTML>
<HEAD><TITLE>URL Test</TITLE>
<META http-equiv=Content-Type content="text/html; charset=UTF-8">
<META http-equiv=pragma content=no-cache>
<body>
你提交了:
<%=q%>
<br/>
<form action="tcnchar.jsp" method="post">
输入中文:<input type="text" name="q"><input type="submit" value="确定">
<br/>
<a href="tcnchar.jsp?q=中国">通过get方式提交</a>
</form>
</BODY></HTML>上面代码中的post方式可以通过Filter来处理
/**EncodingFilter.java*/
public class EncodingFilter implements Filter {
protected FilterConfig filterConfig;
private String targetEncoding = "UTF-8";
public void init(FilterConfig config) throws ServletException {
this.filterConfig = config;
this.targetEncoding = config.getInitParameter("encoding");
}public void doFilter(
ServletRequest servletRequest,
ServletResponse servletResponse,
FilterChain filterChain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)servletRequest;
request.setCharacterEncoding(targetEncoding);
filterChain.doFilter(servletRequest, servletResponse);
}public void destroy() {
this.filterConfig = null;
}
}/**web.xml*/
<filter>
<filter-name>encoding</filter-name>
<filter-class>com.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>测试结果如果你输入文本框或者点超链都会显示:你提交了”中国”,说明成功!!!!!
乱码没有关系,只要能运行就行,我可以在jsp页面转码关键是<from>/products/([a-z]+)</from>如何配置让他支持中文,也京是([a-z]+)如果让他支持中文怎么写
楼上的兄北不明白我要的是([a-z]+)这个正则支持中文怎么写,我用的是url重写组件这个跟server.xml没有一点关系
[\u0022-\u9fa5]