URLReWrite2.java
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class URLReWrite2 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
PrintWriter pw=response.getWriter();
pw.write(new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8"));
pw.write(request.getParameter("age"));
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
URLWrite.java
package com.wanhao;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class URLwrite extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
String path=response.encodeURL("/Javaee/servlet/URLReWrite2?name=張三&age=16");
PrintWriter out=response.getWriter();
out.write("<html>");
out.write("<a href="+path+" target="_blank" rel="external nofollow" >here</a>");
out.write("</html>");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
說說實作中遇到的編碼問題:
在兩個Servlet中同時寫:
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
然後張三一直是亂碼,因為預設把浏覽器URL資訊的讀取是采用 iso-8859-1 格式的,是以必須要編碼轉換,
new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8");便可