实现用户注册功能2


展示用户列表

? 当用户登录成功后,会进入到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" %>
    
  3. 使用JSTL标签

? 当用点击登录按钮后,请求被提交到LoginServlet,处理用户登录请求

? 当用户登录成功时,LoginServlet和把请求转发给UserServlet.

? UserServlet查询所有用户信息,并共享数据,把数据交给list.jsp进行展示。

添加功能

? 点击页面中的添加用户,进入到添加页面。

? 输入添加信息后,点击提交,实现添加功能。

? 在添加功能中,存在几次请求?

? 2次请求,需要两个servlet方法来处理

? USerServlet来已经实现了一个查询列表的功能。

? 一个servlet类如何能够处理多个请求?

? 前台页面,通过传递参数的方式来决定,servlet中执行哪一个方法。

修改功能

? 修改功能存在几次请求?2次,需要两个servlet方法来处理

? 进入修改页面

? 数据回显:把被修改的用户原始信息展示在修改页面中

? 根据id来查询用户信息,id由请求的URL来进行传递

编辑用户

? 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实现类的对象

? 开闭法则:

? 对扩展开放 对修改关闭

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

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

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

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