一:中文数据乱码问题解决
更改response的码表,让response在接受到中文数据时采用正确的码表对数据进行编码
response.setCharacterEncoding("UTF-8")
设置相应的头,控制浏览器以相应的码表显示数据
response.setHeader("content-type","text/html;charset=UTF-8")或者
response.setContentType(text/html;charset=UTF-8);
二:请求重定向
response.setStatus(302);
response.setHeader("location","位置");
或者response.sendRedirect("位置");
这种请求重定向,浏览器向服务器发送两次请求,分别两次创建response,resquest;
三:防盗链
String referer = request.getHeader("referer");得到从那个页面过来的。
四:获取用户数据,通过表单,超链接的参数。
五:获取客户端中文乱码问题,浏览器以什么码表打开的网页,则发送给服务器的是那种码表编码的数据,然后服务器封装到request中时,会以ISO码表转化成字符串,出现乱码,所以在获取客户端中文时必须设置request编码方式:request.setCharacterEncoding("gb2312").在输出中文数据给浏览器时,会查ISO码表对中文数据编码,所以必须设置编码方式和控制浏览器打开方式response.setCharacterEncoding("gb2312")
response.setContentType("text/html;charset=gb2312").
但是get方式提交的方式request设置是无效的,只能自己转化.
String name = request.getParameter();
byte[] source = name.getBytes("iso8859");
String name = new String(source,"gb2312")
六:URL中不能存在中文字符,必须要用URL编码。
七:乱码解决方法,post方式只需要设置request和response的编码方式就可以,get方式不能设置编码方式,必须将得到的数据自己转化。另一种解决方法是修改tomcat服务器,在server.xml的connector增加URIEncoding
或者useBodyEncodingForURI
属性就可以,但是不建议这么做。
八:请求转发两种方式,request或者servletContext都可以。forward请求转发时会把response清空。forward方法执行完会返回到原来的servlet中。
九:所有的路径问题都要"/"开头,若是给服务器用,则代表web工程,比如request.getDispacher,如果是给浏览器用,则代表webapps。比如response.sendRedirect("位置");