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 | √ | × |
传参数 | √ | × |
访问外网 | × | √ |
重复提交的问题 | 有 | 无 |
路径变化 | 无 | 有 |
代码 |
|
|
四. 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
对应的页面中
include
:包含指令
<%@ include file="/include/a.jsp"%>
taglib
:标签指令- 指令的语法格式<%@ 指令名 属性1=“属性值1” 属性2=“属性值2” …%>
六: jsp
九大内置对象
内置对象 | 类 | |
application |
| 全局对象 |
session |
| 会话对象 |
request |
| 请求对象 |
|
| 当前页对象 |
response |
| 响应对象 |
out |
| 输出对象 |
page | this | 当前对象 |
|
| 配置对象 |
exception | 异常对象 |
七. 四大作用域对象
类 | 对象(叫法) | 范围 |
|
| 当前页面(作用不大) 当前页,直接使用就是,根本不需要在放到对象里面 |
| request | 一次请求(必需请求转发) |
| session(多个对象) | 一次会话 |
| application | 整个应用(有且只有一个对象) |
-
pageContext
:每次访问的时候创建,可以有多个; -
request
:每次请求的时候创建,可以有多个; -
session
:每次会话的时候创建,不同人打开不同的浏览器,就创建多个,可以有个多个; -
application
:整个应用有且只有一个对象,tomcat启动的创建,关闭的时候销毁;
八. 作用域对象的使用 添加、修改、查询、删除