HttpServletRequest与HttpServletResponse概要

Tips:以下代码均在IE中通过测试,由于只有IE支持response字符流方法print()向客户端写入html代码,其它浏览器均需用write()方法。

HttpServletResponse

1.状态码
http协议中的常见状态码:
200:表示成功
302:表示重定向
404:表示客户端错误(访问资源不存在)
500:表示服务器端错误
更多: http://developer.qiniu.com/docs/v6/api/reference/codes.html
相关方法:
  response.setStatus(int sc):设置成功状态码;
  response.setError(int sc):设置错误状态码
  response.sendError(int sc,String msg):设置错误状态码,显示错误信息。
2.响应头
详细: http://developer.qiniu.com/docs/v6/api/reference/codes.html
相关方法:
   response.setHeader(String name,String value):设置单值响应头
   response.addHeader(String name,String value):设置多值响应头
   response.setIntHeader(String name,int value):设置单值int响应头
   response.addIntHeader(String name,int value):设置多值int响应头
   response.setDateHeader(String name,long value):设置单值毫秒型响应头
   response.addDateHeader(String name,long value):设置多值毫秒型响应头
----------
重定向

----------

B->A

public class BServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setHeader("Location","/Response/AServlet" );
		response.setStatus(302);
	}

}

***重定向sendRedirect(Sting url)方法

public class GServlet extends HttpServlet {
	
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.sendRedirect("/Response/AServlet");
	}
}

----------
定时刷新

----------

public class CServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
			PrintWriter writer = response.getWriter();
			writer.println("5秒跳转");
			response.setHeader("Refresh", "5;URL=/Response/AServlet");
	}

}

----------
禁用缓存

----------

public class DServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
			response.setHeader("Cache-Control", "no-cache");
			response.setHeader("pragma", "no-cache");
			response.setDateHeader("expires", -1);
			response.getWriter().write("hhhhhh");
	}

}

***meat标签可以代替响应头
3.响应体
    ServletOutputStream sout = response.getOutputStream();

    PritnWriter pout = response.gerWriter();

//字节流
public class FServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String s="FServlet";	
		byte[] bytes = s.getBytes();
		response.getOutputStream().write(bytes);
		
	    //图片
		response.setContentType("image/jpeg");
		String path="F:/a.jpg";
		FileInputStream in = new FileInputStream(path);
		byte[] bytes1=IOUtils.toByteArray(in);
		response.getOutputStream().write(bytes1);
	}
}

============================================================

HttpServletRequest

1.获取常用信息
——request.getRemoteAddr():获取客户端IP
——request.getMethod():获取请求方式post或get
2.获取请求头
——String getHeader(String name):适用于单值请求头
——int getIntHeader(String name):适用于单值int请求头
——long getDateHeader(String name):适用于单值毫秒型请求头
——Enumeration<String> getHeaders(Sting name):适用于多值请求头
----------
获取IP、请求方式、User-Agent

----------

public class AServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//获取客户端的IP地址
		String addr = request.getRemoteAddr();
		//获取请求方式
		String method=request.getMethod();
		//获取User-Agent
		String userAgent=request.getHeader("User-Agent");
		System.out.println("IP:"+addr);
		System.out.println("Method:"+method);
		System.out.println("User-Agent"+userAgent);
	}

}

----------
利用Referer请求头防盗链

----------

public class BServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.getWriter().print(request.getScheme()+"://");
		response.getWriter().print(request.getServerName()+":");
		response.getWriter().print(request.getServerPort());
		response.getWriter().print(request.getContextPath());
		response.getWriter().print(request.getServletPath()+"?");
		response.getWriter().print(request.getQueryString()+"<br/>");
		response.getWriter().print(request.getRequestURI()+"<br/>");
		response.getWriter().print(request.getRequestURL());
	}

}

3.获取请求URL
eg:http://localhost:8080/Request/AServlet?username=xxx&password=xxx
String getScheme():获取协议 http
String getServerName():获取服务器名 localhost
String getServerPort():获取服务器端口 8080
String getContextPath():获取项目名称 /Request
String getServletPath():获取Servlet路径 /AServlet
String getQueryString():获取部分参数 username=xxx&password=xxx
String getRequestURI():获取请求URI /Request/AServlet
String getRequestURL():获取请求URL http://localhost:8080/Request/AServlet?username=xxx&password=xxx
4.获取请求参数
在请求体中(post)
在URL之后(get)
String getParameter(String name):获取指定名称的请求参数值(单值)
String[] getParameter(String name):获取获取指定名称的请求参数值(多值)
Enumeration<String> getParameterNames():获取所有请求参数的名称
Map<String,String[]> getParameterMap():获取所有请求参数
----------

超链接参数、表单数据

----------

public class AServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.getWriter().print(request.getParameter("nicknames")+",");
		response.getWriter().print(request.getParameter("age")+"<br/>");
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.getWriter().print(request.getParameter("<br/>"+"usenames")+"<br/>");
		response.getWriter().print(request.getParameter("password")+"<br/>");
		String[] hobby = request.getParameterValues("hobby");
		String s=Arrays.toString(hobby);
		response.getWriter().print(s);
		
		//获取所有参数
		Enumeration names = request.getParameterNames();
		while(names.hasMoreElements()){
			response.getWriter().print("<br/>"+names.nextElement());
		}
		//获取所有请求参数,封装到Map中
		Map<String,String[]>map=request.getParameterMap();
		for(String name:map.keySet()){
			String[] values = map.get(name);
			System.out.println(name+"="+Arrays.toString(values));
		}
	}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值