Servlet学习笔记



request和response和四大作用域

1.响应对象

1.1什么是响应?

响应:它表示服务器收到了请求,同时已经把请求处理完毕了。把处理结果告知用户。在B/S架构中响应就是把结果发送到浏览器。

1.2常用的响应对象

响应对象也是Servlet规范中定义的。servlet中包含了有协议和无协议的两种对象

协议有关的:HttpServletResponse接口

协议无关的:ServletResponse接口

Servlet提供这两个对象都是接口,没有具体的实现。Tomcat是真正的实现。而且tomcat同时还会帮助我们把对象创建出来并且传入到doGet和doPost方法中。

1.3 常用的方法和状态码
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
		ServletOutputStream os = resp.getOutputStream();
		//响应内容的编码集
		/*resp.setHeader("Content-Type", "text/html; charset=UTF-8");
		resp.setCharacterEncoding("UTF-8");*/
		/*os.write("测试一下".getBytes());*/
		
		//重定向:相当于重新发送了一次请求   url地址发生了改变    请求参数丢失
		//参数是jsp的路径:跳转到对应的页面
		//参数是另外一个请求地址
		resp.sendRedirect("test2");
	}

200 执行成功

302 用于重定向的状态码

404 请求的资源找不到

405 请求的方式不被支持

500 服务内部运行错误

4XX:客户端错误

5XX:服务端错误

2.请求对象

2.1 什么是请求?

请求:就是客户希望从服务器端获取一些资源,向服务器发出询问。在B/S架构中就是客户使用浏览器访问页面

2.2常用的方法
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//获取服务器地址
		//String localAddr = req.getLocalAddr();
		//获取服务器名称
		String localName = req.getLocalName();
		System.out.println(localName);
		//服务器端口
		int localPort = req.getLocalPort();
		System.out.println(localPort);
		//来访者的IP
		String remoteAddr = req.getRemoteAddr();
		System.out.println(remoteAddr);
		//来访者的主机
		String remoteHost = req.getRemoteHost();
		System.out.println(remoteHost);
		//记住:获取访问的URL
		String requestURI = req.getRequestURI();
		System.out.println(requestURI);
	}
2.3 获取请求参数(重点)
//获取请求的参数getParameter("参数的名称")
String uname = req.getParameter("uname");
System.out.println(uname);
String pwd = req.getParameter("pwd");
System.out.println(pwd);
String pwd2 = req.getParameter("pwd2");
System.out.println(pwd2);
//获取表单中同一个name多个value
String[] parameterValues = req.getParameterValues("hobby");
for (String s : parameterValues) {
    System.out.println(s);
}
2.4 转发和重定向
//转发
req.getRequestDispatcher("转发的地址").forward(req, resp);
//重定向
resp.sendRedirect("重定向的地址");
//转发和重定向的区别
//1.转发url地址不会改变  重定向会改变url地址
//2.转发多少次都是一次请求  重定向一次就相当于重新发送了一次请求
//3.转发参数不会丢失   重定向会丢失参数

3.四大作用域

3.1application(ServletContext)

作用范围:所有的用户都可以获取此信息。此信息在整个服务器被保存。

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//获取application作用域对象:getServletContext()
		ServletContext sc = this.getServletContext();
		//从application作用域中获取值getAttribute(key)
		String cname = (String)sc.getAttribute("cname");
		if(cname==null||cname.equals("")) {
			//设置/存储application作用域中的值setAttribute(key,value)
			sc.setAttribute("cname", "小鸡跳动");
		}
		//获取用户请求的用户名参数
		String uname = req.getParameter("uname");
		ServletOutputStream os = resp.getOutputStream();
		String message = uname+",欢迎加入"+(String)sc.getAttribute("cname");
		os.write(message.getBytes());
		//这个流不需要人工关闭。 因为Tomcat服务器会自动关闭这个流
	}
3.2session(会话)

会话:当用户使用浏览器访问第一次访问应用,服务器就对其创建了一个会话对象。当用户关闭浏览器的时候,会话结束。一次会话期间只会创建一个session对象。

作用域:浏览器会话结束。

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		String uname = req.getParameter("uname");
		//获取session对象
		HttpSession session = req.getSession();
		//把用户名放入在session作用域中
		session.setAttribute("uname", uname);
	}
3.3request

作用域:它表示一个请求。只要发送一次请求就会创建一个request对象。仅在当前请求中有效

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		String uname = req.getParameter("uname");
		//放uname放入在request作用域中
		req.setAttribute("uname", uname);
		//转发  转发的时候request作用域中的值不会丢失
		//req.getRequestDispatcher("test2").forward(req, resp);
		//重定向
		resp.sendRedirect("test3");
	}
3.4pageContext

作用范围:整个JSP页面。是四大作用域中最小的。

生命周期:当对JSP页面请求的时候开始,当响应结束的时候销毁。

作用:获取其他的八大隐式对象。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值