JavaWeb开发实战(四)

简介: JavaWeb开发实战(四)

9.6 创建更新用户业务层

package com.zj.service;
import com.zj.pojo.User;
import java.util.List;
public interface UserManageService {
    void addUser(User user);
    List<User> findUsers(User user);
    User findUserById(int id);
    void modifyUser(User user);
}
/*修改用户*/
    @Override
    public void modifyUser(User user) {
        UserManageDao userManageDao = new UserManageDaoImpl();
        userManageDao.updateUser(user);
    }

9.7 创建更新用户Servlet

/*更新用户*/
    public void modifyUser(HttpServletRequest request, HttpServletResponse response) throws IOException {
        User user = this.createUser(request, response);
        try {
            UserManageService userService = new UserManageServiceImpl();
            userService.modifyUser(user);
            response.sendRedirect("ok.jsp");
        }catch (Exception e) {
            e.printStackTrace();
            response.sendRedirect("error.jsp");
        }
    }

9.8 修改更新用户页面完成用户更新

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    <link href="css/style.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript">
        function update(){
            window.location='ok.html';
        }
    </script>
</head>
<body>
<div class="place">
    <span>位置:</span>
    <ul class="placeul">
        <li><a href="#">用户管理</a></li>
        <li><a href="#">修改用户</a></li>
    </ul>
</div>
<div class="formbody">
    <div class="formtitle"><span>基本信息</span></div>
    <%--从servlet跳转过来的不需要加../--%>
    <form method="post" action="userManage.do">
       <input type="hidden" name="flag" value="modify">
        <input type="hidden" name="userid" value="${requestScope.user.userid}">
    <ul class="forminfo">
        <li><label>用户名</label><input name="username" type="text" class="dfinput" value="${requestScope.user.username}"/> </li>
        <li>
            <label>性别</label>
            <c:choose>
                <c:when test="${requestScope.user.usersex == 1}">
                    <input name="usersex" type="radio" value="1" checked="checked" />男&nbsp;&nbsp;&nbsp;&nbsp;
                    <input name="usersex" type="radio" value="0" />女
                </c:when>
                <c:otherwise>
                    <input name="usersex" type="radio" value="1"  />男&nbsp;&nbsp;&nbsp;&nbsp;
                    <input name="usersex" type="radio" value="0" checked="checked"/>女
                </c:otherwise>
            </c:choose>
        </li>
        <li><label>手机号</label><input name="phonenumber" type="text" class="dfinput" value="${requestScope.user.phonenumber}"/></li>
        <li><label>QQ号</label><input name="qqnumber" type="text" class="dfinput" value="${requestScope.user.qqnumber}"/></li>
        <li><label>&nbsp;</label><input  type="submit" class="btn" value="确认修改"/></li>
    </ul>
    </form>
</div>
</body>
</html>

十、删除用户业务

10.1 创建删除用户持久层

package com.zj.dao;
import com.zj.pojo.User;
import java.util.List;
public interface UserManageDao {
    //用户添加
    void insertUser(User user);
    //查询用户
    List<User> selectUserByProperty(User user);
    //预更新用户
    User selectUserById(int userid);
    //更新用户
    void updateUser(User user);
    /*删除用户*/
    void deleteUserById(int userid);
}
//    根据用户id删除用户
    @Override
    public void deleteUserById(int  userid) {
        Connection con = null;
        try {
            con = jdbcUtils.getConnection();
            con.setAutoCommit(false);
            PreparedStatement ps = con.prepareStatement("DELETE FROM users where userid = ? ");
            ps.setInt(1,userid);
            ps.executeUpdate();
            con.commit();
        }catch (Exception e) {
            e.printStackTrace();
            jdbcUtils.rollbackConnection(con);
        }finally {
            jdbcUtils.closeConnection(con);
        }
    }

10.2 创建删除用户业务层

package com.zj.service;
import com.zj.pojo.User;
import java.util.List;
public interface UserManageService {
    void addUser(User user);
    List<User> findUsers(User user);
    User findUserById(int id);
    void modifyUser(User user);
    void removeUser(int userid);
}
/*删除用户*/
    @Override
    public void removeUser(int userid) {
        UserManageDao userManageDao = new UserManageDaoImpl();
        userManageDao.deleteUserById(userid);
    }

10.3 创建删除用户Servlet

/*删除用户*/
    private void removeUser(HttpServletRequest request, HttpServletResponse response) throws IOException{
        String userid = request.getParameter("userid");
        try {
            UserManageService userService = new UserManageServiceImpl();
            userService.removeUser(Integer.parseInt(userid));
            response.sendRedirect("ok.jsp");
        }catch (Exception e) {
            e.printStackTrace();
            response.sendRedirect("error.jsp");
        }
    }

10.4 修改showUsers.jsp页面完成用户删除

<%--超链接直接发送请求不需要加../--%>
            <td><a href="userManage.do?flag=preUpdate&userid=${user.userid}" class="tablelink">修改</a> &nbsp;&nbsp;&nbsp;&nbsp;  <a href="userManage.do?userid=${requestScope.user.userid}" class="tablelink click"> 删除</a></td>


相关文章
|
11天前
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
22天前
|
存储 JavaScript 前端开发
基于 SpringBoot 和 Vue 开发校园点餐订餐外卖跑腿Java源码
一个非常实用的校园外卖系统,基于 SpringBoot 和 Vue 的开发。这一系统源于黑马的外卖案例项目 经过站长的进一步改进和优化,提供了更丰富的功能和更高的可用性。 这个项目的架构设计非常有趣。虽然它采用了SpringBoot和Vue的组合,但并不是一个完全分离的项目。 前端视图通过JS的方式引入了Vue和Element UI,既能利用Vue的快速开发优势,
105 13
|
16天前
|
Java
Java基础却常被忽略:全面讲解this的实战技巧!
本次分享来自于一道Java基础的面试试题,对this的各种妙用进行了深度讲解,并分析了一些关于this的常见面试陷阱,主要包括以下几方面内容: 1.什么是this 2.this的场景化使用案例 3.关于this的误区 4.总结与练习
|
27天前
|
算法 Java API
如何使用Java开发获得淘宝商品描述API接口?
本文详细介绍如何使用Java开发调用淘宝商品描述API接口,涵盖从注册淘宝开放平台账号、阅读平台规则、创建应用并申请接口权限,到安装开发工具、配置开发环境、获取访问令牌,以及具体的Java代码实现和注意事项。通过遵循这些步骤,开发者可以高效地获取商品详情、描述及图片等信息,为项目和业务增添价值。
57 10
|
20天前
|
前端开发 Java 测试技术
java日常开发中如何写出优雅的好维护的代码
代码可读性太差,实际是给团队后续开发中埋坑,优化在平时,没有那个团队会说我专门给你一个月来优化之前的代码,所以在日常开发中就要多注意可读性问题,不要写出几天之后自己都看不懂的代码。
56 2
|
30天前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
|
10天前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者
|
12天前
|
安全 Java Kotlin
Java多线程——synchronized、volatile 保障可见性
Java多线程中,`synchronized` 和 `volatile` 关键字用于保障可见性。`synchronized` 保证原子性、可见性和有序性,通过锁机制确保线程安全;`volatile` 仅保证可见性和有序性,不保证原子性。代码示例展示了如何使用 `synchronized` 和 `volatile` 解决主线程无法感知子线程修改共享变量的问题。总结:`volatile` 确保不同线程对共享变量操作的可见性,使一个线程修改后,其他线程能立即看到最新值。
|
12天前
|
消息中间件 缓存 安全
Java多线程是什么
Java多线程简介:本文介绍了Java中常见的线程池类型,包括`newCachedThreadPool`(适用于短期异步任务)、`newFixedThreadPool`(适用于固定数量的长期任务)、`newScheduledThreadPool`(支持定时和周期性任务)以及`newSingleThreadExecutor`(保证任务顺序执行)。同时,文章还讲解了Java中的锁机制,如`synchronized`关键字、CAS操作及其实现方式,并详细描述了可重入锁`ReentrantLock`和读写锁`ReadWriteLock`的工作原理与应用场景。
|
13天前
|
安全 Java 编译器
深入理解Java中synchronized三种使用方式:助您写出线程安全的代码
`synchronized` 是 Java 中的关键字,用于实现线程同步,确保多个线程互斥访问共享资源。它通过内置的监视器锁机制,防止多个线程同时执行被 `synchronized` 修饰的方法或代码块。`synchronized` 可以修饰非静态方法、静态方法和代码块,分别锁定实例对象、类对象或指定的对象。其底层原理基于 JVM 的指令和对象的监视器,JDK 1.6 后引入了偏向锁、轻量级锁等优化措施,提高了性能。
35 3