展示用户列表
当用户登录成功后,会进入到list.jsp
页面,在list.jsp
页面中展示数据库中所有的用户信息
当用户进行登录操作时,DAO中处理登录方法的返回值类型为User类型,返回的user对象就封装了当前登录用户的信息。
在controller中,根据DAO返回的对象是否为null,来判断用户是否登录成功。
当用户登录成功后,跳转页面时,要把登录对象传递给jsp页面。
注意: 登录对象要保存到session作用域中。
获得所有用户信息
在UserController
中获得所有用户信息,并把用户信息(List)传递到jsp
页面中进行展示。
在list.jsp
中使用table展示数据。
实现循环遍历userList
中所有用户信息。使用JSTL
标签库来遍历userList
。
使用JSTL
步骤
- 引入
JSTL
jar包 - 在jsp页面中导入标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
- 使用
JSTL
标签
当用点击登录按钮后,请求被提交到LoginServlet,处理用户登录请求
当用户登录成功时,LoginServlet
和把请求转发给UserServlet
.
UserServlet
查询所有用户信息,并共享数据,把数据交给list.jsp
进行展示。
添加功能
点击页面中的添加用户,进入到添加页面。
输入添加信息后,点击提交,实现添加功能。
在添加功能中,存在几次请求?
2次请求,需要两个servlet方法来处理
USerServlet
来已经实现了一个查询列表的功能。
一个servlet
类如何能够处理多个请求?
前台页面,通过传递参数的方式来决定,servlet中执行哪一个方法。
修改功能
修改功能存在几次请求?2次,需要两个servlet方法来处理
进入修改页面
数据回显:把被修改的用户原始信息展示在修改页面中
根据id来查询用户信息,id由请求的URL来进行传递
<a href="/usermanager/user/UserServlet?action=editUI&id=${user.id }">编辑用户</a>
UserServlet
接收id后,调用service查询用户
实现修改功能
在修改页面中点击提交,把修改后的表单内容提交到servlet中的doEdit方法上。
方法的执行步骤:
- 接收表单信息
- 查询需要被修改的源对象
根据id查询源对象。提交修改请求时,表单要传递当前用户的id。 - 用接收的表单信息修改源对象属性
- 提交修改功能,调用service
EL表达式
用来获得作用域中存放的数据(属性)
在jsp页面中${user },可以在作用域对象中获得指定名字的属性。
EL表达式会执行PageContext
接口中定义的findAttribute("user")
方法,该方法会从最小的作用域开始依次查找每个作用域。pageContext
--->request------>session--->application.如果找到相同名字的属性,则停止查找。
${pageContext.servletContext.contextPath }
动态获得工程根路径
pageContext
是EL表达式最重要的一个内置对象。
EL表达式有11个
通过pageContext
可以获得jsp
规范的其他8个内置对象。
jsp
的内置对象
在jsp
页面中,不需要创建就能够使用的对象。 有9个。
pageContext
PageContext
request HttpServletRequest
session HttpSession
application ServletContext
response HttpServletResponse
out PrintWriter
config
ServletConfig
初始化servlet
信息
exception Trowable
page Object 相当于java中的this
内置对象不用创建就可以使用,是因为jsp
翻译的servlet
中已经都创建好了。
jsp
的工作原理
jsp
本身就是一个servlet
。
当jsp
第一次被访问时,会被容器翻译为servlet
文件,然后容器会编译、执行这个翻译后的servlet
文件。
如果jsp
文件没有发生改变,再次访问时,不需要重新翻译。
get请求和post请求的区别
post请求执行通过表单来实现, method=“post"
get请求的请求参数由地址栏进行传递。提交的数据了小
http://localhost:8080/usermanager/deleteUser?action=delete&id=1
post请求通过请求对象来封装请求参数。提交的数据量大
过滤器
Filter接口用来实现过滤器(拦截器)
javaweb
的过滤器是用来过滤请求对象和响应对象
通过过滤器处理请求响应对象的编码。
开发过滤器的步骤:
编写一个类实现Filter接口。
为该类添加一个@WebFilter
的注解
重写接口中所有的抽象方法。3个抽象方法。
在doFilter
方法体中处理拦截到的请求响应对象。
对象请求进行放行。
课堂作业:
使用过滤器显示web资源(servlet jsp
)处理请求花费的时间(以毫秒为单位)
监听器
事件处理模型:4要素
事件源: 超链接
事件(类型): click事件
事件监听器: onclick
事件服务程序: 执行的函数
Javaweb
规范中,事件源就是作用域对象。
ServletRequest
,HTTPSession
,ServletContext
作用域对象的创建与销毁
作用域对象属性的改变
案例: 记录当前网站的在线人数。
简单(静态)工厂模式
写程序写的是类,运行程序运行的是对象。
java
中创建对象的方式有几种?1种,就new。
java
中获得对象的方式有几种?
自由恋爱: new 通过new创建对象,存在依赖性,系统的耦合度就会提高。
找百合: 工厂模式 解耦 new产生的耦合。
父母包办: 依赖注入 DI spring IOC
DAO
模式存在4种角色:
DAO
接口
DAO
实现类
pojo
实体类
DAO
工厂: 负责创建DAO
实现类的对象
开闭法则:
对扩展开放 对修改关闭
一个软件系统,要保证在不修改的前提下,实现扩展。
在尽量少修改的情况下实现扩展。
静态工厂中要提供一个用来返回指定接口类型的静态方法。
工厂模式的缺点: 如果在系统开发时实现,工厂模式和单例模式,系统中充斥着大量的工程类和单例类。