Loading

JSP与Servlet的职责与区别

JSP 与 Servlet

运行在服务器端的一个应用程序

1. Servlet与JSP的职责(☆)

  • Servlet职责:用来接收并处理用户的请求,设置字符编码、收集表单参数、调用Dao层、跳转JSP页面
  • JSP的职责:负责数据的展现

2. Servlet跳转JSP页面(☆)

Servlet跳转JSP页面有两种方式,分别如下:
  • 转发:转发是Web服务器(Tomcat)内部控制权的转让,用户发送请求到Servlet,Servlet处理好请求后把内容转移到JSP页面上,给用户浏览后,完成整个请求。代码如下:request.getRequestDispatcher("页面路径").forward(request,response);
  • 重定向:重定向是根据业务逻辑判断,发送一个状态码给浏览器,让浏览器重新请求一个新的地址,所以浏览器地址会发生改变,重定向可以防止表单的重复提交。代码如下:response.sendRedirect("页面路径");

3. JSP中传递对象(☆)

JSP中传递对象有四个,并且是JSP内置对象,分别如下:
对象 范围
pageContext 本页面有效
request 下一个页面有效
session 整个网页会话有效(一个浏览器)
application 整个应用项目有效(一个Web服务器)

4. 转发与重定向的区别(☆)

转发重定向
转发是服务器内部控制权的转让,多个页面之间传递,使用一个request 重定向是告知浏览器重新发送一个请求,实现多个页面之间的跳转,使用两个request
转发只用了一个request,所以浏览器地址不会改变,显示最初请求的地址 重定向使用了两个request,浏览器地址显示最后一次请求的地址
转发只能在项目内部跳转 重定向可以跳转到项目外部
转发传递参数:request、session、application三个对象进行传递,可以传递对象 重定向传递参数只能通过URL传参(?形式),并且只能传递字符串
转发后地址刷新网页会重复提交表单 重定向后地址刷新网页不会重复提交表单
转发的效率高于重定向

5. Request

Request代表用户的请求,常用方法:
方法 描述
setCharacterEncoding("UTF-8") 设置字符编码
setAttbute(key, value) 把对象存入到request中
getAttribute(key) 在request中获取指定的对象,到下个页面有效
getParameter("表单的name属性") 获取表单参数
getRequestDispatcher("跳转路径") 转发路径
getParameterValues("表单的name属性") 表单参数存在多个值,使用此方法,比如:复选框
getRequestURL() 获取访问的绝对路径
getRequestURI() 获取访问的相对路径
getQueryString() 获取访问的参数字符串
getServerName() 获取项目的机器名(IP地址)
getServerPort() 获取访问端口
getContentPath() 获取项目名称
getParameterMap() 获取表单所有参数

6. Get与Post区别

  • Get方式:
    1. get提交会在浏览器地址显示参数,不安全
    2. get提交字符编码与Tomcat有关(request、tomcat、网页字符编码)
    3. get提交参数长度有限制
  • Post方式:
    1. post提交不会在浏览器地址显示参数,安全
    2. post提交字符编码与Tomcat无关(request、网页字符编码)
    3. post提交参数没有限制

Form表单:默认为Get方式
浏览器直接访问:Get方式
JS页面跳转:window.location.href="";Get方式

7. JSP与Servlet区别(☆)

  • 相同点:

    • JSP就是Servlet,是一个简易的Servlet,都可以用来处理用户请求
  • 不同点:

    • Servlet是一个类,用来处理用户请求,做业务逻辑的处理
    • JSP是一个页面,用来呈现数据给用户
    • Servlet侧重于业务逻辑处理
    • JSP侧重于页面展现

8. 九大内置对象对应的类或接口

对象 超类 描述
page java.lang.Object 当前网页对象
pageContext javax.servlet.jsp.PageContext 网页的上下文内容
request javax.servlet.http.HttpServletRequest 当前的请求对象
response javax.servlet.http.HttpServletReponse 响应请求的对象
session javax.servlet.http.HttpSession 网页会话
application javax.servlet.ServletContext 当前应用对象
config javax.servlet.ServletConfig 获取配置信息对象
out servlet.jsp.JspWriter 网页输出对象
exceprion java.lang.Throwable 网页异常对象

9. Session

9.1 什么是Session?

Session是一次网页会话,一个浏览器与服务器的一次通话,包括浏览器与服务器之间的多次跳转

9.2 Session作用(☆)

Session用来存储用户信息,一个用户对应一个Session,Session与Session之间是独立的,不会共享数据。
同一个浏览器同一个服务器不能登录多个用户

9.3 常用方法

方法 描述
request.getSession() 获取session
setAttribute(key, value) 把对象存入session中
getAttribute(key) 从session中获取对象
removeAttribute(key) 根据key值删除session中的对象
setMaxInactiveInterval(int second) 设置session的时长,单位为秒
getMaxInactiveInterval() 获取session的时长,单位为秒
getId() 获取session的唯一标识
invalidate() 把session置成无效,清除session中的所有对象

9.4 Session的生命周期(☆)

Session存储的数据放在服务器端的内存中

  • 诞生
    • 第一次访问服务器时,产生一个session
  • 销毁
    • 关闭浏览器
    • 超时
    • 手动把session置成对象,调用invalidate()方法

9.5 设置Session的时长

  • 在Tomcat下修改web.xml文件中的Session时长,影响整个Tomcat下所有项目的Session时长
  • 修改项目中web.xml文件中的Session时长,只影响本项目中Session的时长
  • 在Sevlet中设置Session时长(session.setMaxInactiveInterval(10);),经过此Servlet就会影响Session的时长

10. Application

10.1 什么是Application?

Application对象类似于系统的全局变量,用户与用户之间可以共享数据

10.2 Application的生命周期

  • 诞生
    • Tomcat启动时会产生一个Application对象,并且只有一个,一个项目一个Application对象
  • 销毁
    • Tomcat关闭时回收Application对象

10.3 Application的常用方法

方法描述
session.getServletContext() 获取Application
request.getServletContext()
this.getServletContext()
setAttribute(key, value) 把对象存入Application中
getAttribute(key) 从Application中获取对象
getInitParameter(参数的key值) 获取web.xml中全局参数

11. Config

11.1 什么是Config对象?

Config对象是获取Servlet或者JSP的配置信息

11.2 Config的常用方法

方法 描述
getInitParameter(参数的key值) 获取Servlet中初始化参数

12. JSP内嵌入JSP

12.1 在JSP页面中可以嵌入另一个JSP,有两种方式:

  • 静态嵌入

    • 把JSP页面内容嵌入到另一个JSP中,产生一个Servlet,上下文内容能关联,称为静态嵌入
      • <%@ include file="页面路径" %>
  • 动态嵌入

    • 嵌入的JSP与主JSP各自编译,产生两个Servlet,上下文内容不能关联,称为动态嵌入
      • <jsp:include page="页面路径"></jsp:include>

12.2 静态嵌入与动态嵌入的区别(☆)

静态嵌入 动态嵌入
静态嵌入使用的是JSP的标签指令<%@ include file="页面路径"%> 动态嵌入使用的是JSP动作<jsp:include page="页面路径"></jsp:include>
静态嵌入使用一个Servlet 动态嵌入使用两个Servlet
静态嵌入上下文内容能关联 动态嵌入上下文内容不能关联

13.1 什么是Cookie?

Cookie是Web服务器在客户端保存的一系列的文本文件,存储客户端有一定的时间周期,周期过了会失效

13.2 创建Cookie

13.2.1 创建Cookie对象

Cookie cookie = new Cookie(name, value);

13.2.2 设置生命周期,单位:秒

cookie.setMaxAge(int second);

13.2.3 写入Cookie

response.addCookie(cookie)

13.2.4 读取
	String egg = "";
	Cookie[] cookies = request.getCookies();
	if (cookies != null) {
		for (Cookie cookie : cookies) {
			if (cookie.getName().equals("egg")) {
				egg = URLDecoder.decode(cookie.getValue(),"UTF-8");
			}
		}
	}

13.3 Cookie的优缺点

优点缺点
Cookie信息存储在客户端电脑的硬盘中,可以减轻服务器压力 Cookie信息透明存储在客户端,信息容易被泄漏,安全性较差
Cookie可以用来提高用户体验度 信息存储在客户端,由浏览器管理,容易被用户删除
注:可有可无的数据存储在Cookie中,用来提高用户的体验度,比如:登录时记住用户名

13.4 Cookie文件的特点

  • 文件的后缀名一般都是txt
  • Cookie存储的信息都是文本信息
  • Cookie文件大小不会超过20KB
  • Cookie文件由浏览器管理
  • Cookie文件有生命周期,超过时间会失效

13.5 Cookie与Session的区别(☆)

Cookie Session
Cookie信息存储在客户端的硬盘中 Session信息存储在服务器的内存中
Cookie只能保存文本(String) Session可以保存对象
Cookie超出有效时间内才会失效 Session随着会话关闭而消失
Cookie一般保存不重要信息,用来提高用户体验度 Session一般保存重要信息,不可以丢失的信息
Cookie不是JSP内存对象,需要手动new Session是JSP九大内置对象
posted @ 2021-11-30 15:38  Schieber  阅读(327)  评论(0编辑  收藏  举报