J2EE9 servlet MVC设计模式 Cookie介绍 Cookie分类

16 篇文章 0 订阅
15 篇文章 0 订阅

MVC设计模式

MVC设计模式,并不是代码上写法的设计模式,和单例模式、工厂模式是不一样的
是一种应用的模型分类
MVC 模式将应用分为模型、视图和控制器三个部分:

  1. 视图(View):数据的展现。 页面的显示jsp只是一个模板引擎
    视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并能接收用户的输入数据,但是它并不进行任何实际的业务处理。视图可以向模型查询业务状态,但不能改变模型。视图还能接受模型发出的数据更新事件,从而对用户界面进行同步更新。

  2. 模型(Model):应用对象。 模型pojo实体类
    模型是应用程序的主体部分。 模型代表了业务数据和业务逻辑; 当数据发生改变时,它要负责通知视图部分;一个模型能为多个视图提供数据。由于同一个模型可以被多个视图重用,所以提高了应用的可重用性。

  3. 控制器(Controller):逻辑处理、控制实体数据在视图上展示、调用模型处理业务请求。 Servlet
    当 Web 用户单击 Web 页面中的提交按钮来发送 HTML 表单时,控制器接收请求并调用相应的模型组件去处理请求,然后调用相应的视图来显示模型返回的数据。
    MVC设计模式是什么?
    要求我们去遵循一个规则,所有的请求都必须通过servlet,然后在访问页面。
    例如,web-inf路径下不能被直接访问,但是可以通过servlet转发访问到。
    怎么遵循,就出现了一个web-inf的文件夹了,所以使用web-inf存放jsp页面,就可以严格遵循mvc设计模式了。
    WebContent:是可以直接访问页面的(jsp放在WebContent地下的话,可以直接访问)
    WEB-INF:不能直接访问页面、可以通过servlet转发来访问

package day47;

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;

@WebServlet("/WebServletTest")
public class WebServletTest extends HttpServlet {

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.getRequestDispatcher("/WEB-INF/index.jsp").forward(req, resp);
	}
}

Cookie介绍

cookie就是一段文本,它存储在客户端(通常来说是浏览器)。
你可以把cookie当作一个map,里边是键值对,每个键值对有 过期时间、域、路径、脚本可否访问等描述信息;
描述信息存储在客户端,客户端请求时,默认会带上cookie的名称和值,不会带描述信息,通过http请求报文header中的cookie项进行传输;
服务器响应时,可以设置cookie信息,就在http响应报文的header中Set-Cookie项;

  • 特點
    1. cookie是保存在浏览器(本地)
    2. cookie每次请求都会带上
    3. cookie分类 会话cookie 和持久cookie
    4. cookie设置方式
      ​ 前端依赖js维护。
      ​ 后端通过响应维护。
      在这里插入图片描述

Cookie分类

  • 会话cookie http是一个无状态请求吗
    如果不设置过期时间,则表示这个 cookie 生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie 就消失了,因为丢失了jsessionid
  • 持久cookie
    如果设置过期时间,则表示这个 cookie 生命周期按照过期时间而过期

7天免登陆
1、把session时效设置为7天、
2、把jsessionid从会话cookie改为持久化cookie,持久化cookie时效是7天
在这里插入图片描述
cP1:

package day47;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/PersistenceCookie")
public class PersistenceCookie extends HttpServlet {

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

		// 持久化cookie
		// 后端通过响应维护
		Cookie cookie = new Cookie("key", "value");
		cookie.setMaxAge(30);// 设置Cookie的有效期//你要设置一个持久化的cookie就要设置有效期/单位:seconds 秒
		// 设置cookie的使用路径,页面访问的使用路径
//		cookie.setPath("/day47");//可在同一应用服务器内共享方法:设置cookie.setPath("/");
		//cookie.setdomain();//相同域名下共享cookie
		resp.addCookie(cookie);// 向浏览器返回cookie信息

	}
}

cP2:

package day47;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/Test1Servlet")
public class Test1Servlet extends HttpServlet {
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//用于读取cookie的信息
		Cookie[] cookies = req.getCookies();
		for (Cookie cookie : cookies) {
			System.out.println(cookie.getName()+":"+cookie.getValue());
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值