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”