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 + -
显示快捷键?