展示用户列表

当用户登录成功后,会进入到list.jsp页面,在list.jsp 页面中展示数据库中所有的用户信息

当用户进行登录操作时,DAO中处理登录方法的返回值类型为User类型,返回的user对象就封装了当前登录用户的信息。

在controller中,根据DAO返回的对象是否为null,来判断用户是否登录成功。

当用户登录成功后,跳转页面时,要把登录对象传递给jsp页面。

注意: 登录对象要保存到session作用域中。

获得所有用户信息

UserController中获得所有用户信息,并把用户信息(List)传递到jsp页面中进行展示。

list.jsp中使用table展示数据。

实现循环遍历userList中所有用户信息。使用JSTL 标签库来遍历userList

使用JSTL 步骤

  1. 引入JSTLjar包
  2. 在jsp页面中导入标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  1. 使用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方法上。

方法的执行步骤:

  1. 接收表单信息
  2. 查询需要被修改的源对象
    根据id查询源对象。提交修改请求时,表单要传递当前用户的id。
  3. 用接收的表单信息修改源对象属性
  4. 提交修改功能,调用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规范中,事件源就是作用域对象。

ServletRequestHTTPSessionServletContext

作用域对象的创建与销毁

作用域对象属性的改变

案例: 记录当前网站的在线人数。

简单(静态)工厂模式

写程序写的是类,运行程序运行的是对象。

java中创建对象的方式有几种?1种,就new。

java中获得对象的方式有几种?

自由恋爱: new 通过new创建对象,存在依赖性,系统的耦合度就会提高。

找百合: 工厂模式 解耦 new产生的耦合。

父母包办: 依赖注入 DI spring IOC

DAO模式存在4种角色:

DAO接口

DAO 实现类

pojo实体类

DAO工厂: 负责创建DAO实现类的对象


开闭法则:

对扩展开放 对修改关闭

一个软件系统,要保证在不修改的前提下,实现扩展。

在尽量少修改的情况下实现扩展。

静态工厂中要提供一个用来返回指定接口类型的静态方法。


工厂模式的缺点: 如果在系统开发时实现,工厂模式和单例模式,系统中充斥着大量的工程类和单例类。