`
yejiurui
  • 浏览: 1823 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

request应用案例

阅读更多

request案例

 request主要是面向客户端的请求,这个比response简单,

 

 

request的常用方法:


案例一、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”

 

  • 大小: 61.6 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics