第一天总结 之 用户管理界面的实现 之 修改操作 的实现

news2024/9/25 11:19:06

修改操作

 首先  明确  修改操作的前提是 先在页面显示修改前的数据  然后对其进行修改  之后点击提交

在页面显示修改前的数据

方法一: 带着数据直接跳转 到添加页面 即在跳转的url后 直接通过?携带数据跳转

缺点: !!! 携带的数据会直接在页面的url上显示 会造成信息泄露等(影响不大 毕竟为修改时数据 本身就需要显示)

具体的实现:
1、在uesr.jsp页面的修改操作处 跳转路径后 追加需要在修改页面显示的数据
在这里插入图片描述
2、在修改页面admin_updateuser.jsp 通过el表达式 在其中书写 java代码 获取url中的数据 获取url中的数据 并展示在指定位置
在这里插入图片描述

3、因为修改操作的sql语句为update t_user set username=? , phone=?,sex=? , mail=? where id=? 目前 我表单中的 input输入框中 有username,phone等 还需要id
两种方法 将id传递到 修改操作的servlet
第一种 : 直接在跳转路径后 追加id属性
在这里插入图片描述

第二种 : 设置一个隐藏的input的输入框 然后将id存放其中 在servlet中获取
在这里插入图片描述

方法二: 带着id数据直接跳转 到ShowUpdateUserServlet中 然后在其中 通过id查询出其对应的对象数据 然后将其放到request域中 然后在页面 通过 ${} 获取request 域中的值

   1、设置user.jsp的跳转路径
   ![在这里插入图片描述](https://img-blog.csdnimg.cn/bc5e5ccf78f44bac8e474113595c2ac8.png)
  2、创建并书写ShowUpdateUserServlet  

代码如下:

package com.qfedu.controller;

import com.qfedu.entity.User;
import com.qfedu.service.UserService;
import com.qfedu.service.impl.UserServiceImpl;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebServlet(name = "ShowUpdateUserServlet", value = "/ShowUpdateUserServlet")
public class ShowUpdateUserServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //先设置请求的字符集  防止中文乱码
        request.setCharacterEncoding("utf-8");

        String pageNo = request.getParameter("pageNo");
        if(pageNo==null){
            pageNo="1";
        }
        Integer pNo=Integer.valueOf(pageNo);

        //获取前端传过来的 用户id
        String id1 = request.getParameter("id");
        Integer id= Integer.valueOf(id1);

        UserService userService=new UserServiceImpl();
        User user = userService.showUpdateUser(id);
        //将user存到request域中
        request.setAttribute("user",user);
        //转发到修改界面
        request.getRequestDispatcher("/after/admin_updateuser.jsp?pageNo="+pNo).forward(request,response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

3、在admin_updateuesr.jsp 页面显示数据
在这里插入图片描述
4、id的传递设置与方法一中的一致 只是值需要通过查询域中数据 即通过 ${user.id} 获取

修改完数据后跳转到 UserUpdateServlet 将修改后的数据传递到后端 对数据库中的数据进行修改

UserUpdateServlet 代码如下:

package com.qfedu.controller;

import com.qfedu.service.UserService;
import com.qfedu.service.impl.UserServiceImpl;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebServlet(name = "UserUpdateServlet", value = "/UserUpdateServlet")
public class UserUpdateServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置请求的字符集  防止中文乱码
        request.setCharacterEncoding("utf-8");

        String pageNo = request.getParameter("pageNo");
        if(pageNo==null){
            pageNo="1";
        }
        Integer pNo=Integer.valueOf(pageNo);

        //获取浏览器中 修改后的数据 以及传递过来的用户的id
        String id1 = request.getParameter("id");
        Integer id= Integer.valueOf(id1);
        String username = request.getParameter("username");
        String phone = request.getParameter("phone");
        String sex = request.getParameter("sex");
        String mail = request.getParameter("mail");
        //将这些属性存放到object集合中
        Object[] objs={username,phone,sex,mail,id};
        //调用service层方法
        UserService userService=new UserServiceImpl();
        boolean b = userService.userUpdate(objs);

        //获取session对象
        HttpSession session = request.getSession(false);
        //设置  session中的一个属性为 userUpdate为ture   代表删除操作成功
        session.setAttribute("userUpdate",true);
        if(b){
            response.sendRedirect("UserFuzzySelectServlet?pageNo="+pNo);
        }else{
            //将session 中的urp 改为false  代表删除失败
            session.setAttribute("userUpdate",false);
            response.sendRedirect("UserFuzzySelectServlet?pageNo="+pNo);
        }
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

service层 与dao层代码 略

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/170740.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

6、Ubuntu20的JDKMySQLtomcatRedis安装

安装JDK 这里以安装版本8为例 进入存放jdk目录创建目录 cd /usr/local mkdir jdk cd jdk 把下好的jdk8压缩包拖拽到Ubuntu连接用户下 移动jdk包文件 mv /home/starfish/jdk-8u351-linux-x64.tar.gz . 解压jdk tar -zxvf jdk-8u351-linux-x64.tar.gz cd jdk1.8.0_351/ p…

【C#】C#Process调用外部程序

前言 使用C#调用外部程序,一种是通过Process类,一种是通过命令行,本文主要说一下使用C#中的Process类调用外部程序的方式。 过程: 创建Process对象配置启动选项(输入、输出等)切换工作目录设置外部程序名…

Java——全排列

题目链接 leetcode在线oj题——全排列 题目描述 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 题目示例 输入:nums [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] …

Linux防火墙状态查看 | 端口关闭 | 端口开启 | 修改命令

目录 firewall防火墙 【1】查看firewall状态 【2】开启、重启、关闭firewalld服务 【3】查看防火墙规则 【3】 添加指定需要开放的端口(开启8088) 【4】重载入添加的端口 【5】查询指定端口是否开启成功 firewall防火墙 【1】查看firewall状态 s…

Java日志系统log4j2的使用配置和异步日志使用

目录1. log4j21.1 log4j2介绍1.2 Log4j2入门1.2.1 log4j2(日志门面 日志框架)使用1.2.2 slf4j log4j2使用1.3 Log4j2配置1.4 Log4j2异步日志1.4.1 全局异步AsyncLogger1.4.2 混合异步AsyncLogger1.4.3 AsyncAppender1. log4j2 1.1 log4j2介绍 Apache Log4j2是Log4j的升级版…

IB地理学什么?适合什么人学习?

IB精选:IB地理学什么?快速搞懂自己适不适合修读地理! 核心目的IB地理科是一个很特别的科目,目的是要帮助同学掌握一些认识和了解现实世界的技能。这个现实世界包括了两大部分。 第一个部分是自然环境,当中包括生态系统…

你还在恐惧指针吗?点进来,带你全方位深入了解指针

指针是什么? 指针也就是内存地址,指针变量是用来存放内存地址的变量。(存放在指针中的值都被当做地址处理) 对于32位的机器,假设有32根地址线,那么假设每根地址线在寻找地址的时候会产生高电平(高电压)和…

[ZJCTF 2019]NiZhuanSiWei

目录 信息收集 代码审计 第一层 第二层 第三层 信息收集 打开页面又是代码审计 代码如下 <?php $text $_GET["text"]; $file $_GET["file"]; $password $_GET["password"]; if(isset($text)&&(file_get_contents($text,…

React + TS + TDD 扫雷游戏学习心得

React TS TDD 扫雷游戏学习心得 试玩地址&#xff1a;https://goldenaarcher.com/minesweeper&#xff0c;stroybook 的地址&#xff1a;https://www.chromatic.com/build?appId63b2530f575ed5942cf105be&number1 测试主要使用 jest&#xff08;mock&#xff09; RTL …

Linux进程控制(进程替换)

目录 一、进程程序替换原理 二、进程替换函数 三、函数实现子进程进程替换 3.1 测试函数 3.2 写时拷贝保证替换后的进程独立性 四、自我实现一个简单的 shell 五、内置命令 5.1 pwd查询路径本质 5.2 内置命令概念 5.3 自我实现shell Pro 先见见进程替换&#xff1a; …

Unity学习笔记--如何在Unity中把自己的代码打包成dll给别人使用?(纯保姆式教学,看完还不会,今晚八点,来沙城砍我)

目录前言背景步骤一步骤二步骤三步骤四&#xff08;关键&#xff01;&#xff01;&#xff01;&#xff09;步骤五步骤六步骤七步骤八步骤九步骤十总结前言 最近公司放年假了&#xff0c;没什么事做&#xff0c;所以来公司学习&#xff08;蹭吃蹭喝ing&#xff09; 突然记起来…

CSS总结笔记+案例

此文章属于前端篇中的第二节CSS样式 继前期HTML标记语言 CSS总结笔记&#xff1a; 3.CSS样式 css&#xff0c;专门用来“美化”标签。 基础CSS&#xff0c;写简单页面&看懂&改。模块、调整和修改 3.1CSS应用方法 1.在标签上 - 高度和宽度样式&#xff1a; <i…

linux基本功系列之alias命令实战

本文目录 文章目录前言&#x1f680;&#x1f680;&#x1f680;一. alias命令介绍二. 语法格式及常用选项三. 参考案例3.1 查看系统已经存在的别名3.2 设置别名的操作3.3 取消别名3.4 alias的全局生效和当前用户生效四. 使用命令的注意事项总结前言&#x1f680;&#x1f680;…

行云洞见 | 为什么说云端IDE代表未来趋势?

原文作者&#xff1a;行云创新解决方案架构师 李楠 预知未来最可靠的方法是了解历史&#xff0c;让我们简单回顾下IDE的发展史。 所谓IDE&#xff0c;即集成开发环境&#xff0c;是软件开发人员在他们用于编程的计算机本地安装的应用程序。伴随着计算机编程语言从第一代机器语…

【NI Multisim 14.0虚拟仪器设计——放置虚拟仪器仪表(万用表)】

目录 序言 &#x1f34d;放置虚拟仪器仪表 &#x1f349;万用表 序言 NI Multisim最突出的特点之一就是用户界面友好。它可以使电路设计者方便、快捷地使用虚拟元器件和仪器、仪表进行电路设计和仿真。 首先启动NI Multisim 14.0&#xff0c;打开如图所示的启动界面&#x…

【虹科分享】虹科ATEasy软件,您的测试执行和开发专家!

测试和执行专家 虹科ATEasy是功能测试&#xff0c;自动测试系统&#xff0c;数据采集&#xff0c;过程控制和仪表系统的测试执行和快速应用开发框架。虹科ATEasy提供开发&#xff0c;部署和维护软件组件的所有必要工具&#xff0c;包括仪器驱动程序&#xff0c;测试程序&#x…

SGA与PGA的区别

前几天有被别人问到什么是SGA和PGA&#xff0c;说实在的&#xff0c;之前一直搞分布式&#xff0c;已经基本把单机里面的这两个概念忘记的差不多了&#xff0c;不过当时还是根据自己的一点数据库经验说了点七七八八&#xff0c;后来网上查了一下相关说明&#xff0c;发现自己的…

现货黄金与白银现货的区别

黄金与白银同为贵金属&#xff0c;二者均在人类货币史上担当过货币的功能&#xff0c;而现货黄金与白银现货作为其最重要的金融衍生品&#xff0c;都具备良好的收益性、流动性和的可操作性&#xff0c;都是比较理想的投资产品。那么和现货黄金和白银现货的区别在哪里呢?小编认…

C++初学者学习笔记

面向对象的程序设计 初步理解 相比较于面向过程的程序设计来说有更多的封装的函数可以使用&#xff0c;相比较来说会比较方便。但是如何去设计整个程序的思路也是需要一定的训练的。 C 简介 C 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言&#xf…

linux系统目录结构

在 Linux 或 Unix 操作系统中&#xff0c;所有的文件和目录都被组织成以一个根节点开始的倒置的树状结构。 文件系统的最顶层是由根目录开始的&#xff0c;系统使用 / 来表示根目录。在根目录之下的既可以是目录&#xff0c;也可以是文件&#xff0c;而每一个目录中又可以包含…