urlencodecase.java

来自「Java分页组件 JPage。 现在已经是1.5版本。铺助实现分页功能。铺助输」· Java 代码 · 共 120 行

JAVA
120
字号
package cn.heroes.test;

import java.io.IOException;

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

import cn.heroes.jpage.JPage;
import cn.heroes.jpage.JPageConfig;

/*
 * 首先:将"中国"直接在地址里输入地址记为1,
 * 和通过<a href="URLEncodeCase?action=a&name=中国">test</a>这样的链接地址记为2是不一样的
 * 只是前者是要以页面设置的编码将汉字编码,再传送,
 * 而后者是以系统的默认编码进行传送(我是GBK),
 * 所以接收的时候也只能以用new String(name.getBytes("ISO-8859-1"), "页面编码或系统默认编码")获得
 * 不能以reqeust.setCharacterEncoding("utf-8")获取
 * 不过我认为(没测过),在地址里直接输入%E4%B8%AD%E5%9B%BD的效果和第2种做法是一样的
 * 也和<a href="URLEncodeCase?action=a&name=%E4%B8%AD%E5%9B%BD">test</a>一样
 * 
 * 以上情况是默认tomcat的设置,下面如果在tomcat设置里加上URIEncoding="UTF-8"
 * 那么直接输地址,我试了很多方法都拿不到.
 * 而这个时候如果拿上面提到的第二种传送方法就可以用
 * request.setCharacterEncoding("utf-8")得到
 * 
 * 所以如果在tomcat里设置了,那万事大吉.
 * 我还发现weblogic大概无需设置就相当于第二种了.
 * 如果想做出来的程序兼容性较强,而且不需要改服务器的任务设置,
 * 那么就得用URLDecoder和URLEncoder加密解密来做了.
 * JPage正是要做到这一点.(要注意一点,传给JPage的request里的中文必须已是正码!!!)
 * 
 * get请求:显示在地址后面的汉字转码%E4%B8%AD%E5%9B%BD和页面编码有关
 * 在没有设置tomcat的情况下,得用getByte()来实现转正码
 ! 在设置了tomcat后,可以直接得到正码,当然set了也不会有错.不过可能页面编码与tomcat设置一致
 * post请求
 * 在没有设置tomcat的情况下,用request.set就可以实现转码
 * 在设置了的情况下,得通过request.set得到正码
 * 
 * 而weblogic9server对于编码的支持是相当完美的
 * 无需任何设置,request.set和getByte都可以从2两种做法里拿到正码!
 * 
 * JPage的目标是:
 * 1.保持原程序仍是使用request.setC...因为SSH框架都是用些
 * 而非使用getByte()
 * 2.页面上的链接仍然使用%E4%B8%AD%E5%9B%BD形
 * 3.由于不设置tomcat的程序耦合性太强,所以应该设置上.
 * 4.要使用保留现场功能的发送第一步请求的时候就应该使用get请求
 * 5.如果非要使用post请求,请选择正确的request.model,JPage会开启中文转码功能
 */
public class URLEncodeCase extends HttpServlet {

	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		/*
		 * 分页查询,保留现场就以get请求为最佳,因为由按钮链接地址跳转仍为get方式
		 */
		// 程序员原程序的编码方式,如果不设置tomcat,就得使用getByte,耦合性太强.
		request.setCharacterEncoding("utf-8");
		
		// 拿到分页条件,对数据库进行查询
		String name = request.getParameter("name");
		System.out.println(name);
		// ...
		
		// 实例JPage
		JPageConfig jpc = new JPageConfig();
		
		// 设置总记录数
		jpc.setRecordTotal(100);
		
		// 装入request
		jpc.setRequest(request);
		
		jpc.commit();
		
		JPage jpage = jpc.getJpage();
		request.setAttribute("jpage", jpage);
		request.getRequestDispatcher("urlEncodeCase.jsp").forward(request, response);
		
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		/*
		 * 不建议使用Post方式
		 * 如果非要使用post请求,那请(在程序,配置,或使用默认get)设置好请求方式,JPage将开启参数转码
		 */
		// 程序员原程序的编码方式,如果不设置tomcat,就得使用getByte,耦合性太强.
		request.setCharacterEncoding("utf-8");
		
		// 拿到分页条件,对数据库进行查询
		String name = request.getParameter("name");
		System.out.println(name);
		// ...
		
		// 实例JPage
		JPageConfig jpc = new JPageConfig();
		
		// 设置总记录数
		jpc.setRecordTotal(100);
		
		// 设置链接参数编码方式
		jpc.setUrlEncoding("utf-8");
		
		// 装入request
		jpc.setRequest(request);
		
		jpc.commit();
		
		JPage jpage = jpc.getJpage();
		request.setAttribute("jpage", jpage);
		request.getRequestDispatcher("urlEncodeCase.jsp").forward(request, response);
	}

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?