1,获取客户端IP , 案件 :封IP getRemoteAddr
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String ip = req.getRemoteAddr();
resp.getWriter().print(ip);
if(ip == "113.102.241.121") {
resp.sendError(404,"IP:"+ip);
}
}
2,请求方式,resp.getMethod() 获取请求方法
3,请求头
4,获取浏览器型号,操作系统,IP
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String ip = req.getRemoteAddr();
System.out.println(ip+" IP");
System.out.println(req.getMethod()+" method");
String useragent = req.getHeader("User-Agent");
System.out.println(useragent);
if(useragent.toLowerCase().contains("chrome")) {
System.out.println("您的IP是:"+ip+" 你用的是谷歌浏览器!");
resp.getWriter().print("your ip is :"+ip+" your browser is: Chrome");
}else if(useragent.toLowerCase().contains("firefox")) {
System.out.println("您的IP是:"+ip+" 你用的是火狐浏览器!");
resp.getWriter().print("your ip is :"+ip+" your browser is: Firefox");
}else if(useragent.toLowerCase().contains("msie")) {
System.out.println("您的IP是:"+ip+" 你用的是IE浏览器!");
resp.getWriter().print("your ip is :"+ip+" your browser is: IE");
}
}
5,获取请求URL
String uri = req.getRequestURI();
StringBuffer url = req.getRequestURL();
String n = req.getScheme();
String l = req.getServerName();
int s = req.getServerPort();
String n2 = req.getContextPath();
System.out.println(url);
System.out.println(uri);
System.out.println(n);
System.out.println(l);
System.out.println(s);
System.out.println(n2);
6,Referer 这个请求头表示,访问来源
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String referer = req.getHeader("ReFerer");
System.out.println(referer);
if(referer == null ||! referer.contains("localhost")) {
resp.sendRedirect("http://www.baidu.com");
}else{
System.out.println("hello");
}
}
7,request 请求参数
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().print(req.getParameter("xxx"));
resp.getWriter().print(req.getParameter("yyy"));
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println(req.getParameter("name"));
System.out.println(req.getParameter("age"));
System.out.println(req.getParameter("sex"));
System.out.println(req.getParameterValues("like"));
resp.getWriter().print(req.getParameter("name"));
resp.getWriter().print(req.getParameter("age"));
resp.getWriter().print(req.getParameter("sex"));
resp.getWriter().print(Arrays.toString(req.getParameterValues("like")));
}
8,request 请求,response 请求响 应 , 请求转发与包含
Fservlet 类
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("oneServlet");
resp.setHeader("aaa","888");//设置响应头
resp.getWriter().print("hello.设置响应体");//设置响应体
//等同于调用了Gservlet的service()方法---doget
req.getRequestDispatcher("/Gservlet").forward(req, resp);
}当执行 Fservlet 类时,浏览器不输出,Fservlet的内容,只输出 Gservlet 所输出的内容 “twoServlet”
这叫做,留头,不留体
Gservlet 类
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("twoServlet");
resp.setHeader("aaa", "AAA");
resp.getWriter().print("twoServlet");
}
包含 include 留下头又留体,所以屏幕会输出,Fservlet类的打印内容,和Gservlet类的打印内容
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("oneServlet");
resp.setHeader("aaa","888");//设置响应头
resp.getWriter().print("hello.设置响应体");//设置响应体
//等同于调用了Gservlet的service()方法---doget
//req.getRequestDispatcher("/Gservlet").forward(req, resp);
//包含 include
req.getRequestDispatcher("/Gservlet").include(req, resp);
}
9, request 域属性 void Attribute(String name,object value) getAttribute(String name) removeAttribute(String name)
同一请求范围使用,request.setAttribute() , request.getAttribute()来传值 ,前一个Servlet保存值 ,后一个Servlet调用取值
10,编码默认使用 UTF-8万国码,《存入时的编码和取出的编码不一致时会 产生编码》
设置响应编码的三种方式
response.getCharacterEncoding("content-type" )
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");// 用这个最简单,通常都用这个,
resp.setHeader("Content-Type", "text/html;charset=utf-8"); //设置响应头,同时设置setCharacterEncoding()
设置请求编码 post get请求
post 请求 在getparameter() 前面用,setCharacterEncoding("utf-8") 即可!
get 请求 在tomcat > conf > service.xml 在connector 结尾 加上 URIEncoding="UTF-8"
(小心使用,除非你客户装的也是TOMCAT服务器)
真正设计get请求 (今后都用如下代码)
String name = req.getParameter("name"); //此get过来传来到的编码默认是iso
//反编回来
byte[] bytes = name.getBytes("ISO-8859-1");
name = new String(bytes,"utf-8");
以下是编码案例
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String name = req.getParameter("name");
String sex = req.getParameter("sex");
//反编译字符编码
byte[] s =sex.getBytes("iso-8859-1");
byte[] b = name.getBytes("iso-8859-1");
name = new String(b,"utf-8");
sex = new String(s,"utf-8");
resp.setContentType("text/html;charset=utf-8"); //响应编码也就是浏览器的
resp.getWriter().print(name);
resp.getWriter().print(sex);
System.out.println(name);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=utf-8");//响应编码也就是浏览器的
String name =req.getParameter("name");
String sex = req.getParameter("sex");
resp.getWriter().print(name+" / "+sex);
}