B/S模式
用户通过浏览器发送请求,访问服务器上的某个部署的项目,经过该项目的MVC,得到响应。
页面提交数据的方式
- 表单提交
<form action="提交路径?参数=值" method="post"></form>
<form action="提交路径" method="get">
<input type="hidden" name="参数名" value="参数值">
</form>
- 超链接提交
<a href="地址?参数=值&参数=值">xxx</a>
- ajax提交
$.ajax({
url:'',
data:{
"参数名":值,
"参数名":值
},
type:"提交方式get/post",
success:function(res){
},
error:function(){}
});
Servlet的生命周期
构造方法 -->init()初始化 -->service()/doGet()/doPost() -->destory()销毁
JSP
作用域对象
- pageContext
- request
- session
- application
作用域范围:application>session>request>pageContext
内置对象
- request
- response
- page
- pageContext
- session
- application
- out
- config
- exception
相对路径
- / 表示从根目录(域名+ip) 出发
- ./ 表示从当前位置出发
- ../ 表示跳向上一层
- 在jsp中,可以使用${pageContext.request.contextPath}表示页面上下文路径
EL
表达式语言。替换jsp中的输出<%=%>部分
- 会依次从pageContext-->request-->session-->application中获取指定对象,${对象名.属性名}或${指定作用域.对象名["属性名"]}
- 从请求中获取参数,${param.参数名}
- 逻辑判断、计算,非空判断${empty 对象} 计算${xx+yy}
JSTL
1.导入JSTL对应的依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
2.在JSP页面中引入标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3.具体使用
- 定义变量或给变量赋值
<c:set var="变量名" value="值"></c:set>
- if判断
<c:if test="判断条件">
满足条件时的内容
</c:if>
- 遍历
<c:forEach items="要遍历的集合" var="遍历出的对象名"></c:forEach>
Session和Cookie
Session
session是一个作用域对象,通常用session保存一些信息,用于在同一个站点的各个页面之间共享数据。
session对象的常用方法
常用方法 | 作用 |
session.setAttribute(String str,Object obj) | 将obj对象保存在session中,命名为str |
session.setAttribute(String str) | 获取保存在session中的对象 |
session.removeAttribute(String str) | 移除保存在session中的对象 |
session.invalidate() | 销毁session |
session.getCreationTime() | 获取session创建时间对应的毫秒数 |
session.getId() | 获取sessionid |
session.getMaxInactiveInterval | 获取session有效时长(默认1800秒),在指定时间内,打开浏览器但无操作,就会自动销毁 |
session.setMaxInactiveInterval(int seconds) | 设置session有效时长,参数为秒 |
ServletContext app=session.getServletContext(); | 获取当前application对象 |
Cookie
通常用于更长时间的保存一些信息,即便关闭浏览器,也能保存。
//cookie创建
Cookie cookie=new Cookie("username","保存在cookie中的用户名");
response.addCookie(cookie);
//cookie的获取
Cookie[] ck=request.getCookies();
//遍历
for(Cookie c:ck){
System.out.println(c.getName()+"--"+c.getValue())
}
Session和Cookie对比
- session中保存的是对象Object,cookie中保存的是字符串String,都以键值对的形式保存
- session保存在浏览器和服务器端,cookie保存在浏览器
- session保存的数据没有大小限制,cookie保存的数据有大小限制,不超过3kb
- session在30分钟内没有访问或随着浏览器的关闭而销毁,cookie可以设置销毁时间
监听器listener
常用的三个监听器
ServletContextListener application监听器
HttpSessionListener session监听器
ServletRequestListener request监听器
过滤器
将指定的请求进行拦截,拦截后进行判断决定是否放行执行后续的请求,通常用于权限控制或解决中文乱码。
Web项目开发模式
Model1
JSP+JavaBean模式
JSP负责渲染数据和处理页面。
JavaBean是一个满足以下条件的类
- 被public修饰
- 其中的属性进行封装
- 有无参数的构造方法
jsp既要显示内容,又要处理数据,后期维护扩展不方便
Model2
MVC模式:模型-视图-控制器模式
M:Model模型
- 用于封装数据处理数据,对应业务逻辑类、数据访问类、实体类
V:View视图
- 用于渲染数据,对应页面(jsp或html)
C:Controller控制器
- 用户调度,用户请求,对应servlet
这个模式适合复杂项目的开发;每个模块各司其职,耦合性低,后期维护扩展较为方便