`

通过中文转码使用包装类

 
阅读更多
jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">   
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
  </head>
  <body>
      <c:url value="testWripperServlet?method=login" var="vv">
        <c:param name="name" value="张三"></c:param>
      </c:url>
       <a href="${vv}">go_1</a>
      <form action="<c url value='////'" method="get">
      </form>
       <a href="javascript:_go()">go</a>
          <form action="<c:url value='testWripperServlet?method=login'/>" method="post">
           <input type="text" name="name" value="">
           <input type="submit" value="提交">
          </form>
  </body>
 
    <script type="text/javascript">
      function _go(){
        var url="<c:url value='testWripperServlet?name=张三你&method=login'/>"
             url=encodeURI(url);
               alert(url);
             window.location.href=url;
          }
    </script>
</html>

servlet类
package com.cgm.servlet;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TestWripperServlet extends BaseServlet{
public void login(HttpServletRequest request,HttpServletResponse response) throws Exception{
String name=request.getParameter("name");
System.out.println("req is"+request);
System.out.println("hhhhhhhh--==="+name);
    String[] names=request.getParameterValues("name");
  System.out.println(names);
  for (int i = 0; i < names.length; i++) {
System.out.println(names[i]);
}
 
   // Map<String, String> map=new HashMap<String, String>();
 
    //默认调用父类方法 如果要修改必须覆盖
Map<String, String[]> map=request.getParameterMap();
   String namess= map.get("name")[0];
   System.out.println("namess="+namess);
 

}
}

调用包装类
package com.cgm.servlet;

import java.io.IOException;
import java.lang.reflect.Method;

import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class BaseServlet extends HttpServlet{
@Override
public void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
String methodName=req.getParameter("method");
try {
Method mm=this.getClass().getMethod(methodName, HttpServletRequest.class,HttpServletResponse.class);
  //声明包装类 调用
MyRequest myRequest=new MyRequest(req);
     mm.invoke(this, myRequest,res);
} catch (Exception e) {
e.printStackTrace();
}
}
}

包装类
package com.cgm.servlet;

import java.io.UnsupportedEncodingException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;

public class MyRequest extends HttpServletRequestWrapper {
private HttpServletRequest request;
  //父类没有无参数构造 此方法必须实现
public MyRequest(HttpServletRequest request) {
super(request);
this.request=request;
}

   //我们可以修改parmter方法
@Override
public String getParameter(String name) {
String value =request.getParameter(name);
if (request.getMethod().equals("GET")) {
System.out.println("==============转码");
try {
value=new String(value.getBytes("ISO-8859-1"),"UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}

return  value;
}



@Override
public String[] getParameterValues(String name) {
String[] values=request.getParameterValues(name);
if (request.getMethod().equals("GET")) {

  System.out.println("=============开始转码");
for (int i = 0; i < values.length; i++) {
try {
values[i]=new String(values[i].getBytes("ISO-8859-1"), request.getCharacterEncoding());

   System.out.println(values[i]);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}

return values;
}

@Override
public Map getParameterMap() {
Map<String, String[]> mm=request.getParameterMap();
if (request.getMethod().equals("GET")) {
Iterator<String[]> it=mm.values().iterator();
while (it.hasNext()) {
String[] its=it.next();
for (int i = 0; i < its.length; i++) {
try {

System.out.println("mappppps1========="+its[i]);
//its[i]=new String(its[i].getBytes("ISO-8859-1"), request.getCharacterEncoding());
  System.out.println("mappppps2========="+its[i]);

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}


}

return mm;
}
}






分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics