精华内容
下载资源
问答
  • javaweb 案例

    2016-03-02 12:10:21
    案例javaweb 的一个案例,主要是完成网上书城的购买等功能
  • JavaWeb案例

    2013-12-19 14:53:57
    JavaWeb开发的5个案例,包含SSH,Jsp等技术
  • javaweb案例

    2012-12-07 15:59:47
    javaweb 初级中级案例 建议初学者参考下载
  • Spring整合javaWeb案例

    2019-12-24 21:15:19
    spring整合javaweb案例 完整目录结构如下图: 步骤如下: 1.创建maven web工程 2.创建包结构 3.创建bean.xml配置文件和配置pom.xml文件 4.创建日志文件 5.创建dao层接口和dao层实现类 6.创建...

    spring整合javaweb案例

    完整目录结构如下图:

    步骤如下:

    1.创建maven  web工程

    2.创建包结构

    3.创建bean.xml配置文件和配置pom.xml文件

    4.创建日志文件

    5.创建dao层接口和dao层实现类

    6.创建service层接口和service层实现类

    7.创建web层servlet

    8.创建success.jsp页面

    9.启动项目

    10.访问页面

    日志输出:

    至此,spring和javaweb整合完毕!

    接下来,我们配置监听器

    再次启动项目

    我们发现,每次启动项目,tomcat都会加载一次bean.xml配置文件。

    这样很影响性能,所以,我们优化LoginServlet类中的代码,如下:

    我们再次访问页面,发现bean.xml只加载了一次!

    展开全文
  • JavaWEB 案例 网上书城;功能分析;总体架构;技术选型;难点分析;实体类设计;数据表设计;数据表设计;搭建环境;搭建环境;Dao 层设计;Dao 接口-1;Dao 接口-2;Dao 接口-3;首页截图没有 首页, 上一页 超链接;封装翻页信息的...
  • javaweb案例+代码

    2012-11-02 15:35:38
    几个经典实用,对学习javaweb很有帮助的javaweb小项目的案例和代码
  • javaweb案例-登录错误时显示错误界面

    千次阅读 2018-08-31 08:00:21
    javaweb案例-登录错误时显示错误界面 如题,我们直接实现他吧! 先来一个 sign.html : <!DOCTYPE html> <html lang="en"> <head> <meta charset...

    javaweb案例-登录错误时显示错误界面

    如题,我们直接实现他吧!

    先来一个
    sign.html :

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <form action="login" method="get">
        name:<br>
        <input type="text" name="name">
        <br>
        Password:<br>
        <input type="text" name="password">
        <input type="submit" value="登录">
    </form>
    </body>
    </html>

    然后上错误界面(这里我用jsp简单写的)
    error.jsp

    <!DOCTYPE html>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>错误界面</title>
    </head>
    <body>
    
    </body>
    <center>
    
        <h2>error</h2>
    
    </center>
    
    </html>

    最后我们写一个LoginServlet.java

    package cn.kuls.demo1;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebServlet(name = "LoginServlet",urlPatterns = "/login")
    public class LoginServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            String uerName="kuls";
            String passWord="123";
            String name=request.getParameter("name");
           String password=request.getParameter("password");
            if (!name.equals(uerName)){
                //账户不存在
                request.getRequestDispatcher("/error.jsp").forward(request,response);
            }else if (!password.equals(passWord)){
              //密码不正确
                request.getRequestDispatcher("/error.jsp").forward(request,response);
            }
        }
    
    }
    

    这里的关键就是:
    request.getRequestDispatcher(“/error.jsp”).forward(request,response);

    他会帮我们跳转到错误的界面。

    展开全文
  • 其实javaweb案例前两个只不过是给我们练练手,复习复习基础用的。没有掌握也没有关系,然而重定向才是最重要的技术,我们需要重点掌握重定向技术。 二、实现重定向 一个web资源收到客户端请求后,他会通知客户端去...

    一、前言

    其实javaweb案例前两个只不过是给我们练练手,复习复习基础用的。没有掌握也没有关系,然而重定向才是最重要的技术,我们需要重点掌握重定向技术

    二、实现重定向

    一个web资源收到客户端请求后,他会通知客户端去访问另外一个web资源,这个过程就是重定向

    常见场景:

    • 用户登录
    void sendRedirect(String var1) throws IOException;
    

    代码测试:

    @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            /*
            resp.setHeader("Location","/r/img");
            resp.setStatus(302);
             */
            
            resp.sendRedirect("/r/img"); //重定向
        }
    

    结果在浏览器中访问效果如下:路径从 /red 自动跳转到 /img

    在这里插入图片描述

    三、面试题:重定向和请求转发的区别

    相同点:

    1. 页面都会实现跳转

    不同点:

    1. 请求转发时候,url不会产生变化
    2. 重定向时候,url地址栏会发生变化

    四、使用重定向技术做一个小Demo

    最开始我们要做好准备工作:
    先创建一个Maven项目,导入jsp依赖,代码如下:

            <dependency>
                <groupId>javax.servlet.jsp</groupId>
                <artifactId>javax.servlet.jsp-api</artifactId>
                <version>2.3.3</version>
            </dependency>
    

    步骤:

    1. 创建一个类继承HttpServlet类,重写doGet()和doPost()。该类的url-pattern(访问路径)为是 /login
    package com.xu.servlet;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    public class RequestTest extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //处理请求
            String username = req.getParameter("username");
            String password = req.getParameter("password");
            System.out.println(username + ":" + password);
            //重定向的时候,一定要注意路径问题,否则就会404
            resp.sendRedirect("/r/success.jsp");
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doGet(req,resp);
        }
    }
    
    
    1. 根据代码我们可以看出,我们重定向的资源路径为/success.jsp。该jsp页面的代码如下:
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    <h1>Success</h1>
    </body>
    </html>
    
    
    1. 我们在index.jsp(开启服务器后,首次访问的页面)页面中添加form表单,作为登录页面,效果如下:

    在这里插入图片描述代码如下:

    <html>
    <body>
    <h2>Hello World!</h2>
    
    <%--这里提交的路径,需要寻找到项目的路径--%>
    <%--${pageContext.request.contextPath}代表当前项目--%>
    <form action="${pageContext.request.contextPath}/login" method="get">
        用户名:<input type="text" name="username"> <br>
        密码:<input type="password" name="password"> <br>
        <input type="submit">
    </form>
    </body>
    </html>
    
    

    最后我们打开服务器,首先会弹出登录页面,提交表单后,会访问RequestTest类资源,由于该类中代码使用重定向技术会将页面定向到success.jsp页面,以上就是重定向技术的展示。

    在这里插入图片描述

    展开全文
  • JavaWeb案例——用户信息管理系统

    万次阅读 多人点赞 2019-08-28 22:56:23
    文章目录1. 需求分析2. 概要设计2.1 技术选型2.2 数据库设计2.3 分页展示用户功能设计2.4 添加用户功能设计2.5 删除用户功能设计2.6 删除选中用户功能设计2.7 修改用户功能设计2.8 查询用户功能设计3....

    需要源码的同学私信我吧,打赏我 20 元吃顿饭就好,万分感谢。

    1. 需求分析

    1. 完成一个用户信息管理系统(基于 BS 架构),功能如下:

      • 分页展示用户信息
      • 添加用户信息
      • 删除用户信息(可以删除选中用户)
      • 修改用户信息(包括用户数据的回显)
      • 查询用户信息(可以输入条件,模糊查询)
    2. 效果图如下:

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    2. 概要设计

    2.1 技术选型

    • Tomcat 服务器
    • Servlet
    • JSP
    • Bootstrap
    • Mysql 数据库
    • Spring JDBC
    • Druid 连接池
    • BeanUtils

    2.2 数据库设计

    DROP TABLE IF EXISTS `user`;
    CREATE TABLE `user` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(20) NOT NULL,
      `gender` varchar(5) DEFAULT NULL,
      `age` int(11) DEFAULT NULL,
      `address` varchar(32) DEFAULT NULL,
      `qq` varchar(20) DEFAULT NULL,
      `email` varchar(50) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    

    2.3 分页展示用户功能设计

    在这里插入图片描述

    在这里插入图片描述

    2.4 添加用户功能设计

    在这里插入图片描述

    2.5 删除用户功能设计

    在这里插入图片描述

    2.6 删除选中用户功能设计

    在这里插入图片描述

    2.7 修改用户功能设计

    在这里插入图片描述

    2.8 查询用户功能设计

    在这里插入图片描述

    3. 开发阶段

    3.1 环境搭建

    1. 创建数据库环境

      1. 打开 Navicat,新建一个数据库 day17
      2. 创建 user 表(表的结构概要设计中已给出)
    2. 创建项目

      打开 IDEA,创建一个 Java EE 项目,Java EE version 为 Java EE 7,勾选 Web Application,不勾选 Create web.xml,项目名称为 day17_2

    3. 导入需要的 jar 包

      导入需要的 jar 包到 web/WEB-INF/lib 中,右键 Add as Library

      • commons-beanutils-1.8.3.jar
      • jstl-impl.jar
      • commons-logging-1.1.1.jar
      • spring-core-4.2.4.RELEASE.jar
      • spring-beans-4.2.4.RELEASE.jar
      • javax.servlet.jsp.jstl.jar
      • druid-1.0.9.jar
      • spring-jdbc-4.2.4.RELEASE.jar
      • mysql-connector-java-5.1.18-bin.jar
      • spring-tx-4.2.4.RELEASE.jar
    4. 创建配置文件

      在 src 下创建 Druid 配置文件 druid.properties

      driverClassName=com.mysql.jdbc.Driver
      url=jdbc:mysql://127.0.0.1:3306/day17
      username=root
      password=123456
      initialSize=5
      maxActive=10
      maxWait=3000
      
      
    5. 修改 Tomcat 配置

      1. 热部署:将 On ‘Update’ action 修改为 Redeploy 和 On frame deactivation 修改为 Update classes and resourses
      2. 修改端口号:将 HTTP Port 修改为 80
      3. 修改虚拟目录:将 Application context 修改为 /day17_2

    3.2 前端代码

    1. 将 Bootstrap 相关的 css,fonts,js 三个文件夹复制到 web 目录下

    2. 首页 index.jsp

      <%@ page contentType="text/html;charset=UTF-8" language="java" %>
      <!DOCTYPE html>
      <html lang="zh-CN">
      <head>
        <meta charset="utf-8"/>
        <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
        <meta name="viewport" content="width=device-width, initial-scale=1"/>
        <title>首页</title>
      
        <!-- 1. 导入CSS的全局样式 -->
        <link href="css/bootstrap.min.css" rel="stylesheet">
        <!-- 2. jQuery导入,建议使用1.9以上的版本 -->
        <script src="js/jquery-2.1.0.min.js"></script>
        <!-- 3. 导入bootstrap的js文件 -->
        <script src="js/bootstrap.min.js"></script>
        <script type="text/javascript">
        </script>
      </head>
      <style>
        div{
          text-align: center;
        }
        a{
          font-size:33px;
        }
      </style>
      <body>
      <div>
        <a
              href="${pageContext.request.contextPath}/FindUserByPageServlet">进入用户信息管理系统
        </a>
      </div>
      </body>
      </html>
      
    3. 用户信息列表页面 list.jsp

      <%@ page contentType="text/html;charset=UTF-8" language="java" %>
      <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
      <!DOCTYPE html>
      <!-- 网页使用的语言 -->
      <html lang="zh-CN">
      <head>
          <!-- 指定字符集 -->
          <meta charset="utf-8">
          <!-- 使用Edge最新的浏览器的渲染方式 -->
          <meta http-equiv="X-UA-Compatible" content="IE=edge">
          <!-- viewport视口:网页可以根据设置的宽度自动进行适配,在浏览器的内部虚拟一个容器,容器的宽度与设备的宽度相同。
          width: 默认宽度与设备的宽度相同
          initial-scale: 初始的缩放比,为1:1 -->
          <meta name="viewport" content="width=device-width, initial-scale=1">
          <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
          <title>用户信息管理系统</title>
      
          <!-- 1. 导入CSS的全局样式 -->
          <link href="css/bootstrap.min.css" rel="stylesheet">
          <!-- 2. jQuery导入,建议使用1.9以上的版本 -->
          <script src="js/jquery-2.1.0.min.js"></script>
          <!-- 3. 导入bootstrap的js文件 -->
          <script src="js/bootstrap.min.js"></script>
          <style>
              h3 {
                  text-align: center;
              }
      
              #search {
                  float: left;
                  margin: 10px;
              }
      
              #search div {
                  margin-right: 5px;
              }
      
              #add_del {
                  float: right;
                  margin: 10px;
              }
      
              #add_del a {
                  margin-left: 5px;
              }
      
              td, th {
                  text-align: center;
              }
      
              #paging_info {
                  font-size: 15px;
                  margin-left: 10px;
                  line-height: 35px;
              }
          </style>
          <script>
              function deleteUser(id) {
                  //用户安全提示
                  if (confirm("您确定要删除吗?")) {
                      //访问路径
                      location.href = "${pageContext.request.contextPath}/DelUserServlet?id=" + id;
                  }
              }
      
              window.onload = function () {
                  // 给删除选中按钮添加删除事件
                  document.getElementById("delSelected").onclick = function () {
                      if (confirm("您确定要删除吗?")) {
                          var flag = false;
                          // 判断是否有选中条目
                          var cbs = document.getElementsByName("id");
                          for (var i = 0; i < cbs.length; i++) {
                              if (cbs[i].checked) {
                                  // 有一个条目选中了
                                  flag = true;
                                  break;
                              }
                          }
                          // 有条目被选中
                          if (flag) {
                              // 表单提交
                              document.getElementById("form").submit();
                          }
                      }
                  }
      
                  // 全选按钮
                  // 1.获取第一个 cb
                  document.getElementById("firstCb").onclick = function () {
                      //2.获取下边列表中所有的 cb
                      var cbs = document.getElementsByName("id");
                      //3.遍历
                      for (var i = 0; i < cbs.length; i++) {
                          //4.设置这些cbs[i]的checked状态 = firstCb.checked
                          cbs[i].checked = this.checked;
      
                      }
      
                  }
              }
          </script>
      </head>
      <body>
      <div class="container">
          <%--标题--%>
          <h3>用户信息列表</h3>
      
          <%--查询用户信息--%>
          <form id="search" class="form-inline" action="${pageContext.request.contextPath}/FindUserByPageServlet" method="post">
              <div class="form-group">
                  <label for="exampleInputName2">姓名</label>
                  <input type="text" name="name" value="${condition.name[0]}" class="form-control" id="exampleInputName2">
              </div>
              <div class="form-group">
                  <label for="exampleInputName3">籍贯</label>
                  <input type="text" name="address" value="${condition.address[0]}" class="form-control" id="exampleInputName3">
              </div>
              <div class="form-group">
                  <label for="exampleInputEmail2">Email</label>
                  <input type="email" name="email" value="${condition.email[0]}" class="form-control" id="exampleInputEmail2">
              </div>
              <div class="form-group">
                  <button type="submit" class="btn btn-default">查询</button>
              </div>
          </form>
      
          <%--增加和删除用户信息按钮--%>
          <div id="add_del">
              <a class="btn btn-primary" href="${pageContext.request.contextPath}/add.jsp">添加用户</a>
              <a class="btn btn-primary" href="javascript:void(0);" id="delSelected">删除选中</a>
          </div>
              
          <%--用户信息表单--%>
          <form id="form" action="${pageContext.request.contextPath}/DelSelectedServlet" method="post">
              <table border="1" class="table table-bordered table-hover">
                  <tr class="success">
                      <th><input type="checkbox" id="firstCb"></th>
                      <th>编号</th>
                      <th>姓名</th>
                      <th>性别</th>
                      <th>年龄</th>
                      <th>籍贯</th>
                      <th>QQ</th>
                      <th>邮箱</th>
                      <th>操作</th>
                  </tr>
                  <c:forEach items="${userByPage.list}" var="user" varStatus="s">
                      <tr>
                          <td><input type="checkbox" name="id" value="${user.id}"></td>
                          <td>${s.count}</td>
                          <td>${user.name}</td>
                          <td>${user.gender}</td>
                          <td>${user.age}</td>
                          <td>${user.address}</td>
                          <td>${user.qq}</td>
                          <td>${user.email}</td>
                          <td><a class="btn btn-default btn-sm"
                                 href="${pageContext.request.contextPath}/FindUserServlet?id=${user.id}">修改</a>&nbsp;
                              <a class="btn btn-default btn-sm" href="javascript:deleteUser(${user.id});">删除</a>
                          </td>
                      </tr>
                  </c:forEach>
              </table>
          </form>
      
          <%--分页--%>
          <nav>
              <ul class="pagination">
                  <%--上一页--%>
                  <c:if test="${userByPage.currentPage == 1}">
                      <li class="disabled">
                          <a href="#" aria-label="Previous">
                              <span aria-hidden="true">&laquo;</span>
                          </a>
                      </li>
                  </c:if>
                  <c:if test="${userByPage.currentPage != 1}">
                      <li>
                          <a href="${pageContext.request.contextPath}/FindUserByPageServlet?currentPage=${userByPage.currentPage-1}&rows=5&name=${condition.name[0]}&address=${condition.address[0]}&email=${condition.email[0]}"
                             aria-label="Previous">
                              <span aria-hidden="true">&laquo;</span>
                          </a>
                      </li>
                  </c:if>
                  <%--第 n 页面--%>
                  <c:forEach begin="1" end="${userByPage.totalPage}" step="1" var="i">
                      <c:if test="${userByPage.currentPage == i}">
                          <li class="active">
                              <a href="${pageContext.request.contextPath}/FindUserByPageServlet?currentPage=${i}&rows=5&name=${condition.name[0]}&address=${condition.address[0]}&email=${condition.email[0]}">${i}</a>
                          </li>
                      </c:if>
                      <c:if test="${userByPage.currentPage != i}">
                          <li>
                              <a href="${pageContext.request.contextPath}/FindUserByPageServlet?currentPage=${i}&rows=5&name=${condition.name[0]}&address=${condition.address[0]}&email=${condition.email[0]}">${i}</a>
                          </li>
                      </c:if>
                  </c:forEach>
                  <%--下一页--%>
                  <c:if test="${userByPage.currentPage == userByPage.totalPage}">
                      <li class="disabled">
                          <a href="#" aria-label="Next">
                              <span aria-hidden="true">&raquo;</span>
                          </a>
                      </li>
                  </c:if>
                  <c:if test="${userByPage.currentPage != userByPage.totalPage}">
                      <li>
                          <a href="${pageContext.request.contextPath}/FindUserByPageServlet?currentPage=${userByPage.currentPage+1}&rows=5&&name=${condition.name[0]}&address=${condition.address[0]}&email=${condition.email[0]}"
                             aria-label="Next">
                              <span aria-hidden="true">&raquo;</span>
                          </a>
                      </li>
                  </c:if>
                  <%--分页信息--%>
                  <span id="paging_info">共${userByPage.totalCount}条记录,共${userByPage.totalPage}页</span>
              </ul>
          </nav>
      </div>
      </body>
      </html>
      
      
    4. 添加用户页面 add.jsp

      <%@ page contentType="text/html;charset=UTF-8" language="java" %>
      <!-- HTML5文档-->
      <!DOCTYPE html>
      <!-- 网页使用的语言 -->
      <html lang="zh-CN">
      <head>
          <!-- 指定字符集 -->
          <meta charset="utf-8">
          <!-- 使用Edge最新的浏览器的渲染方式 -->
          <meta http-equiv="X-UA-Compatible" content="IE=edge">
          <!-- viewport视口:网页可以根据设置的宽度自动进行适配,在浏览器的内部虚拟一个容器,容器的宽度与设备的宽度相同。
          width: 默认宽度与设备的宽度相同
          initial-scale: 初始的缩放比,为1:1 -->
          <meta name="viewport" content="width=device-width, initial-scale=1">
          <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
          <title>添加用户</title>
      
          <!-- 1. 导入CSS的全局样式 -->
          <link href="css/bootstrap.min.css" rel="stylesheet">
          <!-- 2. jQuery导入,建议使用1.9以上的版本 -->
          <script src="js/jquery-2.1.0.min.js"></script>
          <!-- 3. 导入bootstrap的js文件 -->
          <script src="js/bootstrap.min.js"></script>
          <style>
              #add {
                  width:400px;
              }
              h3 {
                  text-align: center;
              }
              #btn {
                  text-align: center;
              }
          </style>
      </head>
      <body>
      <div class="container" id="add">
          <h3>添加用户</h3>
      
          <form action="${pageContext.request.contextPath}/AddUserServlet" method="post">
              <div class="form-group">
                  <label for="name">姓名:</label>
                  <input type="text" class="form-control" id="name" name="name" placeholder="请输入姓名">
              </div>
      
              <div class="form-group">
                  <label>性别:</label>
                  <input type="radio" name="gender" value="男" checked="checked"/>男
                  <input type="radio" name="gender" value="女"/>女
              </div>
      
              <div class="form-group">
                  <label for="age">年龄:</label>
                  <input type="text" class="form-control" id="age" name="age" placeholder="请输入年龄">
              </div>
      
              <div class="form-group">
                  <label for="address">籍贯:</label>
                  <select name="address" class="form-control" id="address">
                      <option value="北京">北京</option>
                      <option value="上海">上海</option>
                      <option value="广州">广州</option>
                  </select>
              </div>
      
              <div class="form-group">
                  <label for="qq">QQ:</label>
                  <input type="text" class="form-control" id="qq" name="qq" placeholder="请输入QQ号码"/>
              </div>
      
              <div class="form-group">
                  <label for="email">Email:</label>
                  <input type="text" class="form-control" id="email" name="email" placeholder="请输入邮箱地址"/>
              </div>
      
              <div class="form-group" id="btn">
                  <input class="btn btn-primary" type="submit" value="提交" />
                  <input class="btn btn-default" type="reset" value="重置" />
                  <a class="btn btn-default" href="${pageContext.request.contextPath}/FindUserByPageServlet">返回</a>
              </div>
          </form>
      </div>
      </body>
      </html>
      
    5. 修改用户页面 update.jsp

      <%@ page contentType="text/html;charset=UTF-8" language="java" %>
      <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
      <!DOCTYPE html>
      <!-- 网页使用的语言 -->
      <html lang="zh-CN">
      <head>
          <!-- 指定字符集 -->
          <meta charset="utf-8">
          <meta http-equiv="X-UA-Compatible" content="IE=edge">
          <meta name="viewport" content="width=device-width, initial-scale=1">
          <title>修改用户</title>
      
          <link href="css/bootstrap.min.css" rel="stylesheet">
          <script src="js/jquery-2.1.0.min.js"></script>
          <script src="js/bootstrap.min.js"></script>
      
      </head>
      <style>
          #update {
              width:400px;
          }
          h3 {
              text-align: center;
          }
          #btn {
              text-align: center;
          }
      </style>
      <body>
      <div class="container" id="update">
          <h3>修改用户</h3>
          <form action="${pageContext.request.contextPath}/UpdateUserServlet" method="post">
              <%--隐藏域提交 id--%>
              <input type="hidden" name="id" value="${user.id}">
      
              <div class="form-group">
                  <label for="name">姓名:</label>
                  <input type="text" class="form-control" id="name" name="name" value="${user.name}" readonly="readonly" placeholder="请输入姓名" />
              </div>
      
              <div class="form-group">
                  <label>性别:</label>
                  <c:if test="${user.gender == '男'}">
                      <input type="radio" name="gender" value="男" checked />男
                      <input type="radio" name="gender" value="女" />女
                  </c:if>
                  <c:if test="${user.gender == '女'}">
                      <input type="radio" name="gender" value="男" />男
                      <input type="radio" name="gender" value="女" checked />女
                  </c:if>
              </div>
      
              <div class="form-group">
                  <label for="age">年龄:</label>
                  <input type="text" class="form-control" id="age"  name="age" value="${user.age}" placeholder="请输入年龄" />
              </div>
      
              <div class="form-group">
                  <label for="address">籍贯:</label>
                  <select name="address" class="form-control" id="address">
                      <c:if test="${user.address == '北京'}">
                          <option value="北京" selected>北京</option>
                          <option value="上海">上海</option>
                          <option value="广州">广州</option>
                      </c:if>
                      <c:if test="${user.address == '上海'}">
                          <option value="北京">北京</option>
                          <option value="上海" selected>上海</option>
                          <option value="广州">广州</option>
                      </c:if>
                      <c:if test="${user.address == '广州'}">
                          <option value="北京">北京</option>
                          <option value="上海">上海</option>
                          <option value="广州" selected>广州</option>
                      </c:if>
                  </select>
              </div>
      
              <div class="form-group">
                  <label for="qq">QQ:</label>
                  <input type="text" class="form-control" id="qq" name="qq" value="${user.qq}" placeholder="请输入QQ号码"/>
              </div>
      
              <div class="form-group">
                  <label for="email">Email:</label>
                  <input type="text" class="form-control" id="email" name="email" value="${user.email}" placeholder="请输入邮箱地址"/>
              </div>
      
              <div class="form-group" id="btn">
                  <input class="btn btn-primary" type="submit" value="提交" />
                  <input class="btn btn-default" type="reset" value="重置" />
                  <a class="btn btn-default" href="${pageContext.request.contextPath}/FindUserByPageServlet">返回</a>
              </div>
          </form>
      </div>
      </body>
      </html>
      
      

    3.3 后端代码

    1. 在 src 中创建 com.zt 包,在其中创建以下包:

      • utils
      • domain
      • dao
        • impl
      • service
        • impl
      • web
        • servlet
    2. utils 包

      • JDBCUtils

        package com.zt.utils;
        
        import com.alibaba.druid.pool.DruidDataSourceFactory;
        
        import javax.sql.DataSource;
        import java.io.IOException;
        import java.io.InputStream;
        import java.sql.Connection;
        import java.sql.ResultSet;
        import java.sql.SQLException;
        import java.sql.Statement;
        import java.util.Properties;
        
        public class JDBCUtils {
        
            // 1.定义静态变量 dataSource
            private static DataSource dataSource;
        
            static {
                try {
                    // 2.加载配置文件
                    Properties properties = new Properties();
                    InputStream resourceAsStream = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
                    properties.load(resourceAsStream);
                    // 3.创建数据库连接池对象,并赋值给 dataSource
                    dataSource = DruidDataSourceFactory.createDataSource(properties);
                } catch (IOException e) {
                    e.printStackTrace();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        
            /**
             * 获取连接池方法
             */
            public static DataSource getDataSource() {
                return dataSource;
            }
        
            /**
             * 通过数据库连接池获取连接对象
             */
            public static Connection getConnection() throws SQLException {
                return dataSource.getConnection();
            }
        
            /**
             * 释放资源
             */
            public static void close(ResultSet resultSet, Statement statement, Connection connection) {
                if (resultSet != null) {
                    try {
                        resultSet.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
                if (statement != null) {
                    try {
                        statement.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
                if (connection != null) {
                    try {
                        connection.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
            }
        
            public static void close(Statement statement, Connection connection) {
                close(null, statement, connection);
            }
        
        
        }
        
        
    3. domain 包

      • User

        package com.zt.domain;
        
        /**
         * 用户对象
         */
        public class User {
            private int id;
            private String name;
            private String gender;
            private int age;
            private String address;
            private String qq;
            private String email;
        
            public int getId() {
                return id;
            }
        
            public void setId(int id) {
                this.id = id;
            }
        
            public String getName() {
                return name;
            }
        
            public void setName(String name) {
                this.name = name;
            }
        
            public String getGender() {
                return gender;
            }
        
            public void setGender(String gender) {
                this.gender = gender;
            }
        
            public int getAge() {
                return age;
            }
        
            public void setAge(int age) {
                this.age = age;
            }
        
            public String getAddress() {
                return address;
            }
        
            public void setAddress(String address) {
                this.address = address;
            }
        
            public String getQq() {
                return qq;
            }
        
            public void setQq(String qq) {
                this.qq = qq;
            }
        
            public String getEmail() {
                return email;
            }
        
            public void setEmail(String email) {
                this.email = email;
            }
        
            @Override
            public String toString() {
                return "User{" +
                        "id=" + id +
                        ", name='" + name + '\'' +
                        ", gender='" + gender + '\'' +
                        ", age=" + age +
                        ", address='" + address + '\'' +
                        ", qq='" + qq + '\'' +
                        ", email='" + email + '\'' +
                        '}';
            }
        
        
        }
        
        
      • PageBean

        package com.zt.domain;
        
        import java.util.List;
        
        /**
         * 分页对象
         */
        public class PageBean<T> {
            private int totalCount; // 总记录数
            private int totalPage; // 总页码数
            private int currentPage; // 当前页码
            private int rows; // 每页显示的条数
            private List<T> list; // 每页的数据
        
            public int getTotalCount() {
                return totalCount;
            }
        
            public void setTotalCount(int totalCount) {
                this.totalCount = totalCount;
            }
        
            public int getTotalPage() {
                return totalPage;
            }
        
            public void setTotalPage(int totalPage) {
                this.totalPage = totalPage;
            }
        
            public int getCurrentPage() {
                return currentPage;
            }
        
            public void setCurrentPage(int currentPage) {
                this.currentPage = currentPage;
            }
        
            public int getRows() {
                return rows;
            }
        
            public void setRows(int rows) {
                this.rows = rows;
            }
        
            public List<T> getList() {
                return list;
            }
        
            public void setList(List<T> list) {
                this.list = list;
            }
        
            @Override
            public String toString() {
                return "PageBean{" +
                        "totalCount=" + totalCount +
                        ", totalPage=" + totalPage +
                        ", currentPage=" + currentPage +
                        ", rows=" + rows +
                        ", list=" + list +
                        '}';
            }
        }
        
        
    4. dao 包

      • UserDao

        package com.zt.dao;
        
        import com.zt.domain.User;
        
        import java.util.List;
        import java.util.Map;
        
        public interface UserDao {
        
            /**
             * 添加用户信息
              * @param user
             */
            public void add(User user);
        
            /**
             * 删除用户信息
             * @param id
             */
            public void delete(int id);
        
            /**
             * 查询用户信息
             * @param id
             * @return
             */
            public User find(int id);
        
            /**
             * 更新用户信息
             * @param user
             */
            public void update(User user);
        
            /**
             * 查询总记录数
             * @return
             * @param condition
             */
            public int findTotalCount(Map<String, String[]> condition);
        
            /**
             * 分页条件查询用户信息
             * @param start
             * @param rows
             * @param condition
             * @return
             */
            public List<User> findByPage(int start, int rows, Map<String, String[]> condition);
        }
        
        
      • UserDaoImpl

        package com.zt.dao.impl;
        
        import com.zt.dao.UserDao;
        import com.zt.domain.User;
        import com.zt.utils.JDBCUtils;
        import org.springframework.jdbc.core.BeanPropertyRowMapper;
        import org.springframework.jdbc.core.JdbcTemplate;
        
        import java.util.ArrayList;
        import java.util.List;
        import java.util.Map;
        import java.util.Set;
        
        public class UserDaoImpl implements UserDao {
            // 使用 Spring JDBC 操作数据库
            private JdbcTemplate jdbcTemplate = new JdbcTemplate(JDBCUtils.getDataSource());
        
            @Override
            public void add(User user) {
                String sql = "insert into user values(null,?,?,?,?,?,?)";
                jdbcTemplate.update(sql,user.getName(),user.getGender(),user.getAge(),user.getAddress(),user.getQq(),user.getEmail());
            }
        
            @Override
            public void delete(int id) {
                String sql = "delete from user where id = ?";
                jdbcTemplate.update(sql,id);
            }
        
            @Override
            public User find(int id) {
                String sql = "select * from user where id = ?";
                User user = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), id);
                return user;
            }
        
            @Override
            public void update(User user) {
                String sql = "update user set name = ?, gender = ?, age = ?, address = ?, qq = ?, email = ? where id = ?";
                jdbcTemplate.update(sql,user.getName(),user.getGender(),user.getAge(),user.getAddress(),user.getQq(),user.getEmail(),user.getId());
            }
        
            @Override
            public int findTotalCount(Map<String, String[]> condition) {
                // 1.定义初始化 sql,注意 sql语句后加空格
                String sql = "select count(*) from user where 1 = 1 ";
                StringBuilder stringBuilder = new StringBuilder(sql);
                // 2.定义参数的集合 params
                List<Object> params = new ArrayList<Object>();
                // 3.遍历 condition
                Set<String> keySet = condition.keySet();
                for (String key : keySet) {
                    // 排除分页条件参数
                    if("currentPage".equals(key) || "rows".equals(key)){
                        continue;
                    }
                    // 获取 value
                    String value = condition.get(key)[0];
                    // 判断 value 是否有值
                    if(value != null || !"".equals(value)){
                        // 给 sql 附加条件语句,注意 sql语句前后加空格
                        stringBuilder.append(" And " + key +" like ? ");
                        // 将 value 放入 params 集合
                        params.add("%"+value+"%");
                    }
                }
        
                return jdbcTemplate.queryForObject(stringBuilder.toString(), Integer.class, params.toArray());
            }
        
            @Override
            public List<User> findByPage(int start, int rows, Map<String, String[]> condition) {
                // 1.定义初始化 sql,注意 sql语句后加空格
                String sql = "select * from user where 1 = 1 ";
                StringBuilder stringBuilder = new StringBuilder(sql);
                // 2.定义参数的集合 params
                List<Object> params = new ArrayList<Object>();
                // 3.遍历 condition
                Set<String> keySet = condition.keySet();
                for (String key : keySet) {
                    // 排除分页条件参数
                    if("currentPage".equals(key) || "rows".equals(key)){
                        continue;
                    }
                    // 获取 value
                    String value = condition.get(key)[0];
                    // 判断 value 是否有值
                    if(value != null || !"".equals(value)){
                        // 给 sql 附加条件语句,注意 sql语句前后加空格
                        stringBuilder.append(" And " + key +" like ? ");
                        // 将 value 放入 params 集合
                        params.add("%"+value+"%");
                    }
                }
                // 4.添加分页条件
                stringBuilder.append(" limit ?,? ");
                // 5.添加分页条件参数值
                params.add(start);
                params.add(rows);
        
                return jdbcTemplate.query(stringBuilder.toString(), new BeanPropertyRowMapper<User>(User.class), params.toArray());
            }
        }
        
        
    5. service 包

      • UserService

        package com.zt.service;
        
        import com.zt.domain.PageBean;
        import com.zt.domain.User;
        
        import java.util.Map;
        
        public interface UserService {
        
            /**
             * 添加用户信息
             * @param user
             */
            public void addUser(User user);
        
            /**
             * 删除用户信息
             * @param id
             */
            public void deleteUser(String id);
        
            /**
             * 查询用户信息
             * @param id
             */
            public User findUser(String id);
        
            /**
             * 更新用户信息
             * @param user
             */
            public void updateUser(User user);
        
            /**
             * 分页条件查询用户信息
             * @param currentPage
             * @param rows
             * @param condition
             * @return
             */
            public PageBean<User> findUserByPage(String currentPage, String rows, Map<String, String[]> condition);
        
        }
        
        
      • UserServiceImpl

        package com.zt.service.impl;
        
        import com.zt.dao.UserDao;
        import com.zt.dao.impl.UserDaoImpl;
        import com.zt.domain.PageBean;
        import com.zt.domain.User;
        import com.zt.service.UserService;
        
        import java.util.List;
        import java.util.Map;
        
        public class UserServiceImpl implements UserService {
            // 调用 UserDaoImpl 来实现业务逻辑
            private UserDao userDao = new UserDaoImpl();
        
            @Override
            public void addUser(User user) {
                userDao.add(user);
            }
        
            @Override
            public void deleteUser(String id) {
                userDao.delete(Integer.parseInt(id));
            }
        
            @Override
            public User findUser(String id) {
                return userDao.find(Integer.parseInt(id));
            }
        
            @Override
            public void updateUser(User user) {
                userDao.update(user);
            }
        
            @Override
            public PageBean<User> findUserByPage(String currentPage, String rows, Map<String, String[]> condition) {
                int currentPage1 = Integer.parseInt(currentPage);
                int rows1 = Integer.parseInt(rows);
                // 1.创建一个空的 PageBean 对象
                PageBean<User> userPageBean = new PageBean<>();
                // 2.设置属性
                userPageBean.setCurrentPage(currentPage1);
                userPageBean.setRows(rows1);
                // 3.调用 dao 查询总记录数
                int totalCount = userDao.findTotalCount(condition);
                userPageBean.setTotalCount(totalCount);
                // 4.调用 dao 查询 list 集合
                // 计算开始的记录索引
                int start = (currentPage1 - 1) * rows1;
                List<User> byPage = userDao.findByPage(start, rows1, condition);
                userPageBean.setList(byPage);
                // 5.计算总页码数
                int totalPage = totalCount % rows1 == 0 ?  totalCount/rows1 : totalCount/rows1 + 1;
                userPageBean.setTotalPage(totalPage);
        
                return userPageBean;
            }
        }
        
        
    6. servlet 包

      • FindUserByPageServlet

        package com.zt.web.servlet;
        
        import com.zt.domain.PageBean;
        import com.zt.domain.User;
        import com.zt.service.UserService;
        import com.zt.service.impl.UserServiceImpl;
        
        import javax.servlet.ServletException;
        import javax.servlet.annotation.WebServlet;
        import javax.servlet.http.HttpServlet;
        import javax.servlet.http.HttpServletRequest;
        import javax.servlet.http.HttpServletResponse;
        import java.io.IOException;
        import java.util.Map;
        
        @WebServlet("/FindUserByPageServlet")
        public class FindUserByPageServlet extends HttpServlet {
            protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                // 1.设置编码
                request.setCharacterEncoding("utf-8");
                // 2.获取参数
                String currentPage = request.getParameter("currentPage"); // 当前页码
                String rows = request.getParameter("rows"); // 每页显示条数
                Map<String, String[]> condition = request.getParameterMap();
        
                // 3.参数为空的情况
                if(currentPage == null || "".equals(currentPage)) {
                    currentPage = "1";
                }
                if(rows == null || "".equals(rows)) {
                    rows = "5";
                }
        
                // 4.调用 UserService 完成查询
                UserService userService = new UserServiceImpl();
                PageBean<User> userByPage = userService.findUserByPage(currentPage, rows, condition);
                // 5.将 userByPage 存入 request
                request.setAttribute("userByPage",userByPage);
                // 6.将 condition 存入 request
                request.setAttribute("condition",condition);
                // 7.转发到 list.jsp
                request.getRequestDispatcher("/list.jsp").forward(request,response);
        
            }
        
            protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                this.doPost(request, response);
            }
        }
        
        
      • AddUserServlet

        package com.zt.web.servlet;
        
        import com.zt.domain.User;
        import com.zt.service.UserService;
        import com.zt.service.impl.UserServiceImpl;
        import org.apache.commons.beanutils.BeanUtils;
        
        import javax.servlet.ServletException;
        import javax.servlet.annotation.WebServlet;
        import javax.servlet.http.HttpServlet;
        import javax.servlet.http.HttpServletRequest;
        import javax.servlet.http.HttpServletResponse;
        import java.io.IOException;
        import java.lang.reflect.InvocationTargetException;
        import java.util.List;
        import java.util.Map;
        
        @WebServlet("/AddUserServlet")
        public class AddUserServlet extends HttpServlet {
            protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                // 1.设置编码
                request.setCharacterEncoding("utf-8");
                // 2.获取参数
                Map<String, String[]> parameterMap = request.getParameterMap();
                // 3.封装对象
                User user = new User();
                try {
                    BeanUtils.populate(user,parameterMap);
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                } catch (InvocationTargetException e) {
                    e.printStackTrace();
                }
                // 4.调用 UserService 完成添加
                UserService userService = new UserServiceImpl();
                userService.addUser(user);
        
                //5.重定向到 FindUserByPageServlet
                response.sendRedirect(request.getContextPath()+"/FindUserByPageServlet");
            }
        
            protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                this.doPost(request, response);
            }
        }
        
        
      • DelUserServlet

        package com.zt.web.servlet;
        
        import com.zt.service.UserService;
        import com.zt.service.impl.UserServiceImpl;
        
        import javax.servlet.ServletException;
        import javax.servlet.annotation.WebServlet;
        import javax.servlet.http.HttpServlet;
        import javax.servlet.http.HttpServletRequest;
        import javax.servlet.http.HttpServletResponse;
        import java.io.IOException;
        
        @WebServlet("/DelUserServlet")
        public class DelUserServlet extends HttpServlet {
            protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                // 1.获取参数
                String id = request.getParameter("id");
                // 2.调用 UserService 完成删除
                UserService userService = new UserServiceImpl();
                userService.deleteUser(id);
                // 3.重定向到 FindUserByPageServlet
                response.sendRedirect(request.getContextPath()+"/FindUserByPageServlet");
            }
        
            protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                this.doPost(request, response);
            }
        }
        
        
      • DelSelectedServlet

        package com.zt.web.servlet;
        
        import com.zt.service.UserService;
        import com.zt.service.impl.UserServiceImpl;
        
        import javax.servlet.ServletException;
        import javax.servlet.annotation.WebServlet;
        import javax.servlet.http.HttpServlet;
        import javax.servlet.http.HttpServletRequest;
        import javax.servlet.http.HttpServletResponse;
        import java.io.IOException;
        
        @WebServlet("/DelSelectedServlet")
        public class DelSelectedServlet extends HttpServlet {
            protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                // 1.获取参数
                String[] ids = request.getParameterValues("id");
                // 2.调用 UserService 完成删除
                UserService userService = new UserServiceImpl();
                for (String id : ids) {
                    userService.deleteUser(id);
                }
                // 3.重定向到 FindUserByPageServlet
                response.sendRedirect(request.getContextPath()+"/FindUserByPageServlet");
        
            }
        
            protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                this.doPost(request, response);
            }
        }
        
        
      • FindUserServlet

        package com.zt.web.servlet;
        
        import com.zt.domain.User;
        import com.zt.service.UserService;
        import com.zt.service.impl.UserServiceImpl;
        
        import javax.servlet.ServletException;
        import javax.servlet.annotation.WebServlet;
        import javax.servlet.http.HttpServlet;
        import javax.servlet.http.HttpServletRequest;
        import javax.servlet.http.HttpServletResponse;
        import java.io.IOException;
        
        @WebServlet("/FindUserServlet")
        public class FindUserServlet extends HttpServlet {
            protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                // 1.获取参数
                String id = request.getParameter("id");
                // 2.调用 UserService 完成查询
                UserService userService = new UserServiceImpl();
                User user = userService.findUser(id);
                // 3.将 user 存入 request
                request.setAttribute("user",user);
                // 4.转发到 update.jsp
                request.getRequestDispatcher("/update.jsp").forward(request,response);
            }
        
            protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                this.doPost(request, response);
            }
        }
        
        
      • UpdateUserServlet

        package com.zt.web.servlet;
        
        import com.zt.domain.User;
        import com.zt.service.UserService;
        import com.zt.service.impl.UserServiceImpl;
        import org.apache.commons.beanutils.BeanUtils;
        
        import javax.servlet.ServletException;
        import javax.servlet.annotation.WebServlet;
        import javax.servlet.http.HttpServlet;
        import javax.servlet.http.HttpServletRequest;
        import javax.servlet.http.HttpServletResponse;
        import java.io.IOException;
        import java.lang.reflect.InvocationTargetException;
        import java.util.Map;
        
        @WebServlet("/UpdateUserServlet")
        public class UpdateUserServlet extends HttpServlet {
            protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                // 1.设置编码
                request.setCharacterEncoding("utf-8");
                // 2.获取参数
                Map<String, String[]> parameterMap = request.getParameterMap();
                // 3.封装对象
                User user = new User();
                try {
                    BeanUtils.populate(user,parameterMap);
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                } catch (InvocationTargetException e) {
                    e.printStackTrace();
                }
                // 4.调用 UserService 完成修改
                UserService userService = new UserServiceImpl();
                userService.updateUser(user);
        
                //5.重定向到 FindUserByPageServlet
                response.sendRedirect(request.getContextPath()+"/FindUserByPageServlet");
            }
        
            protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                this.doPost(request, response);
            }
        }
        
        
    展开全文
  • JavaWeb案例:实现数据库增删改查功能 一、创建数据库与表 二、创建JavaWeb项目db_demo 1、在WEB-INF里创建lib目录,添加数据库驱动jar包 2、在web目录里创建META-INF子目录,在里面创建数据源配置文件...
  • driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql:jdbc:mysql://localhost:3306/db2?useSSL=true&useUnicode=true&characterEncoding=utf8 username=...6000
  • 尚硅谷培训机构的Java web案例,有代码和注释,很好的学习教程
  • 1. 架构分析 2. DAO 设计 3. BaseDAO 实现 4. BookDAO 实现 5. 翻页实现 6. 翻页小结 7. 查看图书详细信息 8. 加入购物车 9. 购物车操作 10. Ajax 修改购物车单品数量 11. 简单验证和复杂验证 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,256
精华内容 5,702
关键字:

javaweb案例

java 订阅