【Servlet】Request/Response/Cookie/Session中常用方法

#1.Request

package com.tcb.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 目的:总结HttpRequest中常用的方法
 */
public class Servlet01Request extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public Servlet01Request() {
        super();
        // TODO Auto-generated constructor stub
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//一、路径问题:
		//1.上下文路径: /TCB-Request01         	当前项目目录(重要的)
		String contextPath=request.getContextPath();
		System.out.println("======contextPath======="+contextPath);
		//2.uri--统一资源标识符:  /TCB-Request01/Servlet01	服务器上的路径
		String uri=request.getRequestURI();
		System.out.println("======uri======="+uri);
		//3.url--统一资源定位符:  http://localhost:8080/TCB-Request01/Servlet01
		String url=request.getRequestURL().toString();
		System.out.println("======url======="+url);//
		//统一资源标识符=http://localhost/资源标识符
		//访问的地址:统一资源定位符
		
		
		//二、提交方式--GET/POST    默认是GET方式,此处运行结果为GET
		String method=request.getMethod();
		System.out.println("======method======="+method);
		
		//三、服务器内部--根据需求设置要传的值,并在其他页面根据Request获取值--利用的Request是域对象的特性,进行页面见传值
		//注意:区别于Parameter
		request.setAttribute("key", "value");
		request.getAttribute("");//根据名称获取指定传的值
		request.getAttributeNames();//获取所有的传值的名称
		
		
		//四、客户端--获取客户端传来的参数Parameter--比如get方式中地址栏问号?后的username=Jane&password=123
		//1.根据指定参数名称获取值
		request.getParameter("");//值为单个时
		request.getParameterValues("");//值为多个时,返回值为数组--比如爱好hobby,一个参数名下对应多个值
		//2.获取所有参数名称
		request.getParameterNames();
		//3.获取所有参数,并一键值对(key=value)的形式存在map集合中
		request.getParameterMap();
		
		//五、获得Cookie和session
		request.getCookies();
		request.getSession();
		request.getRequestedSessionId();//获取session的id,每个session都会在客户端生成一个唯一的id
		
		//六、设置编码方式
		request.setCharacterEncoding("utf-8");
		
		//七、转发--地址栏不变,请求一次
		request.getRequestDispatcher("要跳转到的页面地址").forward(request, response);
		request.getRequestDispatcher("要跳转到的页面地址").include(request, response);//包含,功能与forward类似,不常用
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

#2.Response

package com.tcb.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 目的:总结HttpResponse中常用的方法
 */
public class Servlet02Response extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public Servlet02Response() {
        super();
        // TODO Auto-generated constructor stub
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//一、设置编码--当然也可以获取编码方式,不常用就不一一列出了
		//设置响应输出的编码方式,不常用,一般用下面那个
		response.setCharacterEncoding("utf-8");
		//告诉浏览器输出的文本是html,让浏览器按照html方式进行解析,并且HTML的文件的编码格式是utf-8
		//因为在进行输出时可以写html标签,若没有设置为如下格式,就不能解析html标签
		//比如:response.getWriter().write("<a href='http://www.baidu.com' >百度<a/>");
		response.setContentType("text/html;charset=utf-8");
		
		//二、输出流
		response.getWriter();//字符流
		response.getOutputStream();//字节流
		
		//三、添加Cookie
		Cookie cookie=new Cookie("username", "用户名");
		response.addCookie(cookie);
		
		//四、设置请求头--常用于文件下载
		response.setHeader("content-type", "image/png");//设置请求头内容类型,为png类型图片
		//content-disposition内容配置
		//attachment代表附件的意思  保存下载内容
		response.setHeader("content-disposition", "attachment;filename="+"文件名称,带扩展名");
		
		//setHeader实现刷新
		//3s后刷新,只刷新一次--其中3指代时间                          所以setHeader也可以实现页面跳转
		response.setHeader("refresh", "3;url=刷新跳转的页面地址,可以是jsp,HTML,Servlet等");
		response.setIntHeader("refresh", 3);//目的:循环是刷新,每隔3s去刷新
		
		
		//五、重定向--地址栏变化,请求两次
		response.sendRedirect("要跳转到的页面地址,一般用绝对路径");
		
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

#3.Cookie

package com.tcb.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 目的:总结Cookie中常用的方法
 */
public class Servlet03Cookie extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public Servlet03Cookie() {
        super();
        // TODO Auto-generated constructor stub
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//获取Cookie
		request.getCookies();
		//创建和添加Cookie
		Cookie cookie=new Cookie("", "");//参数1:参数名   参数2:参数值
		response.addCookie(cookie);
		
		//设置Cookie有效时间和路径
		cookie.setMaxAge(0);//设置Cookie有效时间,单位是秒     值为0时,表示Cookie失效(默认)   
		cookie.setPath("uri,路径");//设置Cookie路径
		
		//获取Cookie的值和名以及当前路径
		cookie.getName();
		cookie.getValue();
		cookie.getPath();
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

#4.Session

package com.tcb.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * 目的:总结Session中常用的方法
 */
public class Servlet04Session extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public Servlet04Session() {
        super();
        // TODO Auto-generated constructor stub
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//创建session
		HttpSession session=request.getSession();
		//给session赋值以及获取值--参数1:参数名  参数2:参数值
		session.setAttribute("key", "value");
		session.getAttribute("");//根据传值的名称获取值
		session.getAttributeNames();//获取session中存的所有值的名称
		
		//设置session有效时间,单位秒
		session.setMaxInactiveInterval(5);
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
package test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.List; import java.util.Map; public class HttpTest { private HttpURLConnection hc = null; private static final String oneUrlString = "http://xxx.jsp"; private static final String twoUrlString = "http://xxx.action"; public String getSessionId() { String sessionId = ""; try { URL url = new URL(oneUrlString); hc = (HttpURLConnection) url.openConnection();//默认的用GET提交 hc.setDoOutput(true); hc.connect(); Map map = hc.getHeaderFields(); //得到Cookie的所有内容,包括SESSIONID,在进行下次提交的时候 直接把这个Cookie的值设到头里头就行了 //淡然只得到SESSIONID也很简单的 ,但是有时候Set-Cookie的值有几个的 List list = (List) map.get("Set-Cookie"); if(list.size() == 0||list == null) { return null; } StringBuilder builder = new StringBuilder(); for(String str : list) { sessionId = builder.append(str).toString(); } hc.disconnect(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return sessionId; } public String getResponseContext(String parameters) { String responseContext = ""; try { URL url = new URL(twoUrlString); hc = (HttpURLConnection) url.openConnection();//使用POST提交 hc.addRequestProperty("Cookie", getSessionId()); hc.setDoOutput(true); hc.connect(); OutputStream out = hc.getOutputStream(); //参数是a=""&b=""这样拼接的一个串 out.flush(); out.close(); out.write(parameters.getBytes(),0,parameters.getBytes().length); InputStream in = hc.getInputStream(); InputStreamReader reader = new InputStreamReader(in,"gb2312"); BufferedReader read = new BufferedReader(reader); StringBuilder builder = new StringBuilder(); String str = ""; while((str = read.readLine()) != null) { builder = builder.append(str); } read.close(); reader.close(); in.close(); hc.disconnect(); responseContext = builder.toString(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return responseContext; } }

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值