• JAVAWeb2:整体框架


    一.页面功能需求

    1.主页面

    • 跳转:登录页,注册页,我的收藏页,后台管理页
    • 展示:展示所有的商品
    • 功能:添加商品到我的收藏

    2.登录页

    • 跳转:注册页,登录成功页
    • 展示:登录表单项
    • 功能:提交登录表单

    3.注册页:

    • 跳转:注册成功页
    • 展示:注册表单项
    • 功能:提交注册表单项

    4.我的收藏页:

    • 跳转:主页面
    • 展示:展示我的收藏的商品
    • 功能:删除,清空,下载我收藏(图片)

    5.后台管理:

    • 跳转:主页
    • 展示:所有的商品项
    • 功能:增加,删除,修改商品项

    二.登录注册(数据库流程)

    1.数据库:

    • 存user

    2.javabean

    • user对象

    3.Dao持久层

    • BaseDao抽象类:完成基本的增删改查操作
    • UserDao接口:定义方法的规范
      用户名查表(select)
      用户名密码查表(select)
      保存用户名密码(insert)
    • UserDaoImpl实现类和继承类:具体实现上述方法

    4.Service业务层

    • UserService接口:定义方法的规范
      登录:登录校验(返回null登录失败)
      注册:用户名重名(返回false用户名可用)
      用户名保存数据库
    • UserServiceImpl实现类

    5.Web层

    • BaseServlet抽象类:获取action值,反射调用该方法
    • UserServlet继承类:获取参数,处理业务,跳转页面
      登录:调用service方法和获取的参数,结果存入域中,跳转页面

    6.客户端

    三.我的收藏管理(session技术)

    1.javabean对象和cart对象

    • javabean的cartItem对象
    • cart对象(保存cartItem对象)
      Map
      添加cartitem
      删除cartitem
      修改cartitem
      清空cart
      获取cartitem的数量

    2.CartServlet(完成servlet与web联调)

    • 加入我的收藏
      获取http请求的参数获取对象存入session中
    • 删除我的收藏
      获取session域中的cartitem删除
    • 清空我的收藏
      获取cart并clear

    四.前段架构

    1.前端架构

    在这里插入图片描述

    2.项目中的使用

    ①html的使用

    • 表单
    <form action="UserServlet">
    	<input type="hidden" name="action" value="login">
    	<input type="text" name="username" value="具体文本">
    	<input type="password" name="password" value="具体文本">
    	<input type="submit" name="" value="">
    form>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 表格
    <table>
    	<tr>
    		<td><td>
    		<td><td>
    		<td><td>
    	tr>
    table>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • a标签div标签span标签
    <a href=""> 
    <div>div>
    <span>span>
    
    • 1
    • 2
    • 3

    ②js-jquery的使用(导包)

    • js中的confirm
      询问是否继续完成
    • jquery代替js元素代码的触发事件
    $(function(){})
    $("").click(functiono(){})
    $("").blur(function(){})
    
    • 1
    • 2
    • 3

    ③jsp的应用

    • 四大域对象
      常用两个:request和session
      request:一次请求有效
      session:一次会话有效
    • EL表达式 原生jsp(<%=%>) EL表达式(${ } 不指明域默认从小到大)
    原生:
    request.getparameter(String name)
    EL表达式
    requestScope.name
    sessionScope.Cart(返回的列表)
    User.username(域中存的对象,可以直接通过该方法访问对象的属性)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • JSTL标签库
    <c:foreach items="${requestScope.items}" var="item">循环
    
    <c :if test="">条件判断
    true则执行
    c if>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    五.实现的功能逻辑

    1.功能1:表单回显和错误回显(登录密码错误保留用户名,返回错误信息msg)

    • 服务器:
      request.getParameter() 获取客户端发来的客户请求信息 HTTP请求数据
      request.serAttribute() 对request域中保存数据
    • 客户端
      requestScope.getAttribute() 对requestScope域中取出数据
      =request.getAttribute()

    2.功能2:对列表的遍历输出

    <c:for each items="${requestScope.books}" var="book">
    	<tr>
    		<td>${book.name}<td>
    	<tr>
    
    • 1
    • 2
    • 3
    • 4

    3.功能3:同一个页面实现add/update操作

    • add:http请求不需要id,且request域中无lover 页面跳转
    • update:http请求需要id,且request域中有 lover 页面-servlet查询数据-页面
      此时查询数据已经把数据保存值request域中(使用请求转发)
    <input type="hidden" name="action" value="${empty param.id?"add":"update"}">
    
    • 1

    4.功能4:未登录不允许进入manager后台管理页面

    • 使用Filter
    > doFilter拦截,请求权限检查 user=session.getAttribute("user") if(user==null)返回首页
    > else filterchain.dofilter() 继续执行
    
    • 1
    • 2

    5.功能5:实现事务

    • 利用threadlocal来保存一个connection
    • 利用dofilter过滤所有的service加上try-catch
    try{filterchain.doFilter();提交事务}
    catch(){回滚事务}
    
    • 1
    • 2
    • service抛出–servlet抛出–dopost处理(抛出异常给filter)
      即最终异常会到dopost中

    6.功能6:验证用户名是否可用

    • json数据
      json对象 {“name”:}
      json字符串"{“name”:}"
    • ajax请求
      局部更新页面:请求和响应局部
      异步发起请求:不需要等待服务器传送的数据即可向下执行
    • 验证用户名是否可用
      正常:blur跳转访问服务器,再重新加载页面
      ajax:只需局部更新数据即可
    • 具体流程
    服务器:
    Gson gon = new Gson();
    String json = gson.toJson(Map<String,Integer>)
    resp.getWriter.write(json)
    
    jsp页面:
    $.getJson(url,data,function(data){data.existUsername})
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    7.功能7:验证码的使用(解决重复提交问题)

    • 加载kaptcha-2.3.2 jar包
    • 配置 xml文件(/kaptcha.jpg)
      客户端:
      img中的src:/kaptcha.jpg(服务器请求图片)
      服务器:
      token:获取session中的验证码然后立马删除session中的验证码
      getParameter(“code”)
      token==code
    • 单击更改kaptcha.jpg只需更改src的地址
      kaptcha.jpg是按照请求的参数生成
      加入new Date() 即每次都不同
  • 相关阅读:
    通过一个平面几何题来梳理解题模型
    Tcl-5. format 命令
    Typora+picgo-core+gitee配置图床
    猿创征文丨赶紧进来看看!!!你可能都不清楚的三种变量和零值比较
    无状态自动配置 DHCPv6无状态配置 DHCPv6有状态配置
    MybatisPlus存储对象成MySQL的json数据类型
    如何在 Blender 中更快地渲染?
    蓝牙核心规范(V5.4)12.4-深入详解之广播编码选择
    React-Admin后台管理模板|react18+arco+zustand后台解决方案
    小程序备案小程序认证双系统
  • 原文地址:https://blog.csdn.net/qq_44724899/article/details/127608376