实现用户注册功能2
展示用户列表
? 当用户登录成功后,会进入到list.jsp页面,在list.jsp 页面中展示数据库中所有的用户信息
? 当用户进行登录操作时,DAO中处理登录方法的返回值类型为User类型,返回的user对象就封装了当前登录用户的信息。
? 在controller中,根据DAO返回的对象是否为null,来判断用户是否登录成功。
? 当用户登录成功后,跳转页面时,要把登录对象传递给jsp页面。
? 注意: 登录对象要保存到session作用域中。
获得所有用户信息
? 在UserController中获得所有用户信息,并把用户信息(Listjsp页面中进行展示。
? 在list.jsp中使用table展示数据。
? 实现循环遍历userList中所有用户信息。使用JSTL 标签库来遍历userList。
? 使用JSTL 步骤
-
引入
JSTLjar包 -
在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来进行传递
编辑用户
? 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实现类的对象
? 开闭法则:
? 对扩展开放 对修改关闭
? 一个软件系统,要保证在不修改的前提下,实现扩展。
? 在尽量少修改的情况下实现扩展。
? 静态工厂中要提供一个用来返回指定接口类型的静态方法。
? 工厂模式的缺点: 如果在系统开发时实现,工厂模式和单例模式,系统中充斥着大量的工程类和单例类。