request案例
request主要是面向客户端的请求,这个比response简单,
案例一、request案例一 获得客户机信息
request第一部分 获取客户机信息
url和uri的区别?
url是uri的一个子集。
uri可以制定任何路径。
url必须是完整的路径。
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 ResponseServlet4 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //测试一些客户机数据 System.out.println("uri:"+request.getRequestURI()); System.out.println("url:"+request.getRequestURL());//获得完整的url System.out.println("querystr:"+request.getRequestURL());//获得请求行中的参数部分 response.setContentType("text/html;charset=utf-8");//编码方式 PrintWriter out=response.getWriter(); out.println("您的ip是:"+request.getRemoteAddr());//得到客户机的ip out.println("您的客户机完整名是:"+request.getRemoteHost()); out.println("您的请求方式是:"+request.getMethod()); // 获得当前用户访问的资源 String uri=request.getRequestURI();// /myday06/request4 String contextpath=request.getContextPath();// /myday06 out.println("你正在访问的是:"+uri.substring(contextpath.length()));//这句的意思是去掉前面的信息,只保留后面的资源名称 } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
案例二:获取头信息,防止盗链
import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ResponseServlet5 extends HttpServlet { //防止盗链 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); //分析原理,头信息referer,得知该次请求来源,判断是否为盗链 String referer=request.getHeader("referer"); if(referer==null||!referer.startsWith("http://localhost")) { response.getWriter().println("<h1>盗链资源,可耻!</h1>"); //如果我直接访问我这个servlet,那么一定是盗链,因为referer为null }else{ response.getWriter().println("<h1>欢迎访问</h1>"); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
案例三、处理中文乱码
案例三、防止中文乱码
可以提交请求的两种方式
1.使用<form>
执行form的submit,提交form表单。
常用表单元素
<input type=[text | password | radio | checkbox | submit ]>
<select>…<option>
<textarea>
2.使用URL链接
<a href="http://www.163.com?name=abc&password=123"> 点击链接 </a>
这样通过?可以提交参数,&用来分隔多个参数,
效果和<form>的GET方式相同
处理中文乱码
数据非空校验
处理中文乱码
post乱码问题:
setCharacterEncoding //放在getParameter前才有效
get乱码问题:
new String(str.getBytes(“ISO-8859-1”),”utf-8”)
设置tomcat Connector URIEncoding=“utf-8”