(1) 请求信息编码转化的Filter
importjava.io.IOException;
importjava.util.Enumeration;
importjavax.servlet.Filter;
importjavax.servlet.FilterChain;
importjavax.servlet.FilterConfig;
importjavax.servlet.ServletException;
importjavax.servlet.ServletRequest;
importjavax.servlet.ServletResponse;
public class EncodeFilter implementsFilter{
private FilterConfig filterConfig=null;
private String encoding=null;
//默认构造函数
public EncodeFilter(){
}
//初始化过滤器
public void init(FilterConfig filterConfig)throwsServletException{
this.filterConfig=filterConfig;
this.encoding=filterConfig.getInitParameter("encoding");
}
//得到编码
private String getEncoding(){
return this.encoding;
}
//执行过滤操作
public void doFilter(ServletRequestrequest,ServletResponseresponse,
FilterChainfilterChain)throws
IOException,ServletException{
//设置编码格式
if(request.getCharacterEncoding()==null){
&nb ......
GBK编码
GBK编码是中国制订的、等同于UCS的新的中文编码扩展国家标准。GBK工作小组于1995年10月,同年12月完成GBK规范。该编码标准兼容GB2312,共收录汉字21003个、符号883个,并提供1894个造字码位,简、繁体字融于一库。
UTF-8编码
UTF-8编码可以通过屏蔽位和移位操作快速读写。字符串比较时strcmp()和wcscmp()的返回结果相同,因此使排序变得更加容易。字节FF和FE在UTF-8编码中永远不会出现,因此他们可以用来表明UTF-16或UTF-32文本(见BOM) UTF-8 是字节顺序无关的。它的字节顺序在所有系统中都是一样的,因此它实际上并不需要BOM。
GB2312
GB2312支持的汉字太少。1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。2000年的GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求。所以手机、MP3一般只支持GB2312。
从ASCII、GB2312、GBK到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一地处理 ......
修改了css 样式文件后,重新浏览该jsp页面,发现新修改的样式没有生效。总以为是项目缓存所引起的,于是清理所有项目,重新构建项目。不行。执行server 的 publish 还是不行。用window 的搜索功能发现除了 WebContent 目录有该 css 文件外,.metadata\.plugins\org.eclipse.wst.server.core\tmp1\webapps\ 目录下也存在该 css 样式文件,但发现该文件的最近修改日期却是昨天的,果然打开该文件发现内容还是旧的。
那么,为什么我执行 server 视图的 publish 功能没有将新的文件替换呢?
原来一直我都习惯用 vim 编辑工具来编辑 css 文件,而这样 Eclipse 是监测不了该文件已经修改,从而执行 publish 时不把新文件替换旧文件。必须是在 Eclipse 环境中去修改 css 文件,然后再执行 publish。
总结: 用 Eclipse 做jsp 的开发,修改文件操作应该尽量 Eclipse 开发环境来完成。 ......
知识准备:
JDBC访问数据库的基本步骤
(1)、将数据库的JDBC驱动加载到工程类库中。
(2)、加载JDBC驱动,并将其注册到DriverManager中。下面是一些主流数据库的JDBC驱动加载注册码:
①、oracle数据库
Class.forName(“oracle.jdbc.driver.OracleDriver”).newInstance();
②、Sql Server 7.0/2000数据库
Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”).newInstance();
③、MySQL数据库
Class.forName(“com.mysql.jdbc.Driver”).newInstance();
(3)、建立数据库连接,取得Connection对象。
①、oracle数据库
String url=”jdbc:oracle:thin:@localhost:1521:orcl”;
String user=”scott”:
String password=”tiger”;
Connetion conn=DriverManager.getConnetion(url,user,password);
②、Sql Server 7.0/2000数据库
String url=”jdbc:microsoft:sqlserver://localhost:1443;DatabaseName=pubs”;
String user=”sa”;
String password=””;
Connection conn=DriverManager.getConnection(url,user,password);
③、MySQL数据 ......
在jsp中,如果在url中传递中文时会出现乱码,在网上关于这一问题的解决方法五花八门,但都不是很奏效!其实解决方法非常简单: 第一步:编码(以传递的参数为str为例) 在传递数据前将str进行编码Java.net.URLEncoder.encode(str) 第二步:解码 在获取数据端将得到的数据进行解码 new String(str.getBytes("ISO8859_1"))
简单示例程序如下:
<%@ page contentType="text/html;charset=gb2312" %>
<a href="ds.jsp?url=<%=java.net.URLEncoder.encode("编码的是这里","GB2312")%>">点击这里</a>
<%
//request.setCharacterEncoding("GBK");
if(request.getParameter("url")!=null)
{
str=request.getParameter("url");
//下面是解码
str=java.net.URLDecoder.decode(str,"GB2312");
str=new String(str.getBytes("ISO-8859-1"));
out.print(str);
}
%>
......
在jsp中不用定义可以直接用的就是jsp的9个内建对象了
1,Request 2,Response 3,session 4,out 5,page
6,application 7,pageContext 8,config
9,exception
1、Request对象
该对象封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息,即使用该对象可以
获取用户提交的信息。
当Request对象获取客户提交的汉字字符时,会出现乱码问题,必须进行特殊处理。首先,将获取的
字符串用ISO-8859-1进行编码,并将编码存发岛一个字节数组中,然后再将这个数组转化为字符串对象
即可。如下:
String
textContent=request.getParameter("boy");
byte
b[]=textContent.getBytes("ISO-8859-1");
textContent=new String(b);
Request常用的方法:
1.01 getParameter(String strTextName) 获取表单提交的信息。
String strName=request.getParameter("name");
1.02 getProtocol()
获取客户使用的协议。
String strProtocol=request.getProtocol();
1.03
getServletPath() 获取客户提交信息的页面。
String
strServlet=request.getServletPath();
1.04 getMethod()
获取客户提交信息的方式, ......