一、引言
了解了servlet基本原理,其中内置对象response与request了解是必须的,终点学习下==
主要包括get和post方法中的使用
先直观的看一下response和request:get请求没有请求体,post请求有请求体,这里举例为post请求
二、response
不说了,直接上代码,应该比较好了解
package ;import java.io.FileInputStream;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import mons.io.IOUtils;/*** Servlet implementation class MyResponse*/@WebServlet("/MyResponse")public class MyResponse extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public MyResponse() {super();// TODO Auto-generated constructor stub}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stub/*//设置响应码response.sendError(404,"找不到");*//*//重定向两种方法response.setHeader("location", "/second/Resource");response.setStatus(302);response.sendRedirect("/second/Resource");*//*//定时刷新response.setHeader("refresh", "5;URL=/second/index.jsp");*//*//设置取消缓存response.setHeader("Cache-Control", "no-cache");response.setHeader("pragma", "no-cache");response.setHeader("expires", "-1");*//*//字节流传输String s="hahaha";byte[] bs=s.getBytes();response.getOutputStream().write(bs);*///获取图片流String path="C:/Users/xcy/Desktop/a.jpg";FileInputStream fi=new FileInputStream(path);byte[]bt=IOUtils.toByteArray(fi);response.getOutputStream().write(bt);}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}
三、request
同上面一样,先上代码,把基本的方法了解==
package ;import java.io.IOException;import java.util.Map;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/*** Servlet implementation class MyRequest*/@WebServlet("/MyRequest")public class MyRequest extends HttpServlet {/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stub/*//获取ipString ip=request.getRemoteAddr();response.getWriter().print(ip+"<hr/>");*//*//获取请求方法String method=request.getMethod();response.getWriter().print(method);*//*//获取客户端信息String useragent=request.getHeader("user-agent");response.getWriter().print(useragent);*//*//获取请求urlString url=request.getRequestURL().toString();response.getWriter().print(url);*//*//获取refererString refer=request.getHeader("referer");response.getWriter().print(refer);*/String name=request.getParameter("name");/*byte[]bytes=name.getBytes("iso-8859-1");name=new String(bytes,"utf-8");response.setHeader("content-type", "text/html;charset=utf-8");*/response.setHeader("content-type", "text/html;charset=utf-8");response.getWriter().print(name);Map<String, String[]> map= request.getParameterMap();response.getWriter().print(name);}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubrequest.setCharacterEncoding("utf-8");String name=request.getParameter("name");response.setHeader("content-type", "text/html;charset=utf-8");//response.setHeader("content-type", "text/html;charset=utf-8");response.getWriter().print(name);}}
然后重点讲解一下请求转发与请求包含;
1、请求转发与包含是一个request请求,而重定向是两个请求,request公用;
2、请求转发和请求包含是两个servlet;
3、请求转发留请求头不留请求体,而请求包含留请求头留请求体;
servlet1
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubresponse.setHeader("name", "xcy");response.getWriter().println("1");/*//请求转发request.getRequestDispatcher("/zhuanfa2").forward(request, response);*///请求包含request.getRequestDispatcher("/zhuanfa2").include(request, response);}
servlet2
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubresponse.getWriter().println("2");}
请求转发输出的是:2;
请求包含输出的是:12;
四、总结
request与response直观感受;response常用方法;request常用方法;重点介绍request请求转发与请求包含;