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”


 
     
					 
					