servlet和jsp的原理和应用介绍
一. Servlet
的三大职责
- 接受请求参数(封装);
- 调用业务方法处理业务(调用业务service层);
- 响应请求(跳转页面或其他
Servlet
)
二. 为什么需要共享信息与页面跳转
servlet
:主要是做动态页面 特点java
为主+html
为辅;jsp
:主要是做动态页面。html
为主 +java
为辅(jsp
本质上就一个特殊的servlet
)
三. 跳转方式
-
请求转发
//请求转发的代码: req.getRequestDispatcher("路径").forward(request, response);
- 1 特点:地址栏不发生改变、一次请求、可以访问WEB/INF的资源、共享数据、不可以跨域访问(比如访问百度)
-
重新定位方向
//重定向跳转的方式: resp.sendRedirect("路径");//直接跳转
2.1 特点:地址栏发生改变、多次请求(两次请求)、不可以访问WEB/INF的资源、不共享数据、可以跨域访问(比如访问百度)
-
何时使用请求转发和重定向
-
如果在一次请求中,要共享数据,就使用请求转发;
-
如果要访问WEB- INF下面的资源,请使用请求转发;
-
如果要跨域访问用重定向;
-
新增/修改/删除之后,都要重定向。
请求转发(forward) 重定向(redirect) 访问 WEB-INF √ × 传参数 √ × 访问外网 × √ 重复提交的问题 有 无 路径变化 无 有 代码 req.getRequestDispatcher(path).forward(req, resp);
resp.sendRedirect(path)
-
四. jsp
简介
JSP(java server page)
:java
服务器端(动态)网页,JSP
就是Java
中用来做动态网页的技术;JSP
底层就是一个Servlet
,在执行的时候先转成Servlet
然后同样要经历Servlet
的生命周期;
五. jsp
三大指令
-
page
:页面指令1.1
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" ... >
- language=“
java
”:语言只有java
contentType="text/html; charset=UTF-8"
:输出的页面类型,相当于在Servlet
里面写:resp.setContentType("text/html;charset=utf-8")
pageEncoding="UTF-8"
errorPage
:如果当前页面出错了,我就跳转到errorPage
对应的页面中
- language=“
-
include
:包含指令<%@ include file="/include/a.jsp"%>
-
taglib
:标签指令 -
指令的语法格式<%@ 指令名 属性1=“属性值1” 属性2=“属性值2” …%>
六: jsp
九大内置对象
内置对象 | 类 | |
---|---|---|
application | ServletContext | 全局对象 |
session | HttpSession | 会话对象 |
request | HttpServletRequest | 请求对象 |
pageContext | PageContext | 当前页对象 |
response | HttpServletResponse | 响应对象 |
out | JspWriter | 输出对象 |
page | this | 当前对象 |
config | ServletConfig | 配置对象 |
exception | 异常对象 |
七. 四大作用域对象
类 | 对象(叫法) | 范围 |
---|---|---|
PageContext | pageContext | 当前页面(作用不大) 当前页,直接使用就是,根本不需要在放到对象里面 |
HttpServletRequest | request | 一次请求(必需请求转发) |
HttpSession | session(多个对象) | 一次会话 |
ServletContext | application | 整个应用(有且只有一个对象) |
pageContext
:每次访问的时候创建,可以有多个;request
:每次请求的时候创建,可以有多个;session
:每次会话的时候创建,不同人打开不同的浏览器,就创建多个,可以有个多个;application
:整个应用有且只有一个对象,tomcat启动的创建,关闭的时候销毁;