首页 > 其他分享 >day32

day32

时间:2022-11-16 21:34:56浏览次数:43  
标签:res req day32 session cookie 转发 out

1 请求转发与重定向的区别
2 session与cookie的区别
3 过滤器与监听器的区别

4 web-inf目录
web-inf目录是安全目录,无法从客户端访问,只能通过(服务端的)servlet的请求转发访问
5 servlet生命周期
6 ServletContext对象

JSP简介
image
jsp是一种模板引擎(渲染前端布局)

JSP指令

image

JSP内置对象(9种)

image

请求与响应

httpservletrequest请求

接收客户端发送的请求报文

httpservletresponse响应

响应客户端的请求(给客户端返回数据)

页面跳转方式:请求转发与重定向

请求转发

req.getRequestDispatcher("page/demo.jsp").forward(req,res);

重定向

res.sendRedirect("http://baidu.com");
或
res.senRedirect("user?method=queryAll");

请求转发与重定向区别

注意:
1)请求转发之后不能创建响应类的输出流
2)请求转发之后不能重定向

printWriter out = res.getWriter();
out.write("1233");

1)转发使用的是req.getRequestDispatcher()方法;重定向使用的是res.sendRedirect();
2)转发:浏览器URL的地址栏不变;重定向:浏览器URL的地址栏改变;
3)转发是服务器行为,重定向是客户端行为;
4)转发是浏览器只做了一次访问请求。重定向是浏览器做了至少两次的访问请求;

Session会话

session可以理解为缓存
以下代码在anotherServlet中跳转demo02.jsp中也可以获取到,但浏览器关闭缓存被释放
可以设置session失效时间(s)
一旦客户端与服务端断开连接,session就会失效

//MyServlet.java内
public class MyServlet extends HttpServlet{
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
		//获取session会话对象(getSession()会在请求范围内查找是否存在session对象,如果存在则返回该对象,否则创建一个新的session对象)
		HttpSession session = req.getSession();
		
		//设置session十秒后失效
		session.setMaxInactiveInterval(10);
		//添加属性到session中
		session.setAttribute("name", "111");
		//请求转发
		req.getRequestDispatcher("page/demo.jsp").forward(req, res);
	}
}
<!-- demo.jsp内 -->
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	hello session<!-- 打印到浏览器页面显示 -->
	<%
		System.out.println("hello session");/* 打印到控制台 */
	%>
	
	<%=session.getAttribute("name") %><!-- 输出到前端页面 -->
</body>
</html>

session与cookie的区别

image

Cookie

在doGet方法内创建&获取cookie
先创建,再获取,中间cookie一直保存在浏览器中(除非setMaxAge时间到了)

/**创建cookie
	//创建一个cookie对象
	Cookie cookie = new Cookie("k1", "张三abc");
	//设置过期时间单位(s)
	cookie.setMaxAge(30);
	res.setCharacterEncoding("GBK");
	PrintWriter out = res.getWriter();
	out.write("开始写入cookie");

	//添加cookie到响应对象
	res.addCookie(cookie);
	out.write("结束写入cookie");
	if(out != null){
		out.close();
	}
*/

/**获取cookie 

	Cookie[] cookies = req.getCookies();

	for (Cookie c : cookies) {
		System.out.println(c.getName()+"**" + c.getValue());
	}
	*/

ServletContext接口

image

MyServlet内

//获取servletConfig对象(因为是tomcat创建的)
ServletConfig sc = getServletConfig();

//获取ServletContext对象,全局唯一
ServletContext sct = getServletContext();

//添加参数

sct.setAttribute("name01", "111");
sct.setAttribute("name02", "222");

PrintWriter out = res.getWriter();
out.write("success");
out.flush();
if (out != null) {
	out.close();
}

NewServlet内验证在MyServlet内创建的ServletContext存在全局

public class NewServlet extends HttpServlet{

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//获取servletConfig对象(因为是tomcat创建的)
//		ServletConfig sc = getServletConfig();
		//获取ServletContext对象,全局唯一
		ServletContext sct = getServletContext();
		System.out.println(sct.getAttribute("name01")+"***"+sct.getAttribute("name02"));
		
		//可以改变属性的值,ThirdServlet再去get的时候就会name01就会获得这个覆盖的值
		//sct.setAttribute("name01","333");
	}

}

标签:res,req,day32,session,cookie,转发,out
From: https://www.cnblogs.com/xiaoto9426/p/16891608.html

相关文章

  • 进入python的世界_day32_网络编程—— OSI七层协议传输层之TCP(三次握手,四次挥手)和UDP
    一、传输层之——TCP与UDP协议​ 协议很多种,都是为了规定数据交互的方式,数据传输能够遵循的协议有很多TCP和UDP只是比较常见的两个1.TCP协议​ 一种可靠的基于(面向)连......
  • 代码随想录day32 | 122.买卖股票的最佳时机II 55. 跳跃游戏
    122.买卖股票的最佳时机II题目|文章思路因为每天都可以将股票买入和卖出,因此,我们可以将买卖时机进行分解。局部最优:如果当天的利润为正,则加入,如果当天利润为负,则不加......
  • 前端Ajax-Day32
    XMLHttpRequest:用于请求服务器上的资源。  使用XMLHttpRequest发起get请求:①创建xhr对象②调用xhr.open函数:请求类型和请求地址③调用xhr.send函数④监听xhr......
  • Day32接口
    接口普通类:只有具体实现抽象类:具体实现和规范(抽象方法)都有!接口:只有规范!(自己无法写方法)1.接口就是规范,定义的是一组规则,体现了现实生活中“如果你是...则必须能...”的......
  • 2022-08-19 day32 第一小组 王鸣赫
    目录Statement的不足:PreparedStatement:预编译(预加载)接口数据库事务:是数据库的特性事务的四大特征ACIDStatement的不足:1、大量的字符串拼接,代码可读性降低。2、sql注入......