• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

JavaWeb连接数据库实现页面登录、注册和增删改查

武飞扬头像
夙.224
帮助1

登录

在Navicat创建数据库

学新通

登录页面

  1.  
    <%--
  2.  
    Created by IntelliJ IDEA.
  3.  
    User: Lenovo
  4.  
    Date: 2023/2/15
  5.  
    Time: 11:13
  6.  
    To change this template use File | Settings | File Templates.
  7.  
    --%>
  8.  
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  9.  
    <html>
  10.  
    <head>
  11.  
    <title>登录页面</title>
  12.  
    </head>
  13.  
    <body>
  14.  
    <h2>登录</h2>
  15.  
    <form action="login" method="post">
  16.  
    账户:<input type="text" name="username" value="" /><br/>
  17.  
    密码:<input type="password" name="password" value="" /><br/>
  18.  
    <input type="submit" value="登录" />
  19.  
    </form>
  20.  
    </body>
  21.  
    </html>
学新通

登陆成功页面

  1.  
    <%--
  2.  
    Created by IntelliJ IDEA.
  3.  
    User: Lenovo
  4.  
    Date: 2023/2/17
  5.  
    Time: 20:01
  6.  
    To change this template use File | Settings | File Templates.
  7.  
    --%>
  8.  
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  9.  
    <html>
  10.  
    <head>
  11.  
    <title>主页面</title>
  12.  
    </head>
  13.  
    <body>
  14.  
    <h2>登陆成功!</h2>
  15.  
    </body>
  16.  
    </html>
学新通

登陆失败页面

  1.  
    <%--
  2.  
    Created by IntelliJ IDEA.
  3.  
    User: Lenovo
  4.  
    Date: 2023/2/17
  5.  
    Time: 20:00
  6.  
    To change this template use File | Settings | File Templates.
  7.  
    --%>
  8.  
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  9.  
    <html>
  10.  
    <head>
  11.  
    <title>错误</title>
  12.  
    </head>
  13.  
    <body>
  14.  
    <h2>登录失败!</h2>
  15.  
    <a href="login.jsp">返回登录</a>
  16.  
    </body>
  17.  
    </html>
学新通

在User类中写入实体、属性、方法

  1.  
    package bean;
  2.  
     
  3.  
    public class User {
  4.  
    private Integer uid;
  5.  
    private String username;
  6.  
    private String password;
  7.  
    private String phone;
  8.  
    private String address;
  9.  
     
  10.  
    public User() {
  11.  
     
  12.  
    }
  13.  
     
  14.  
    public Integer getUid() {
  15.  
    return uid;
  16.  
    }
  17.  
     
  18.  
    public void setUid(Integer uid) {
  19.  
    this.uid = uid;
  20.  
    }
  21.  
     
  22.  
    public String getUsername() {
  23.  
    return username;
  24.  
    }
  25.  
     
  26.  
    public void setUsername(String username) {
  27.  
    this.username = username;
  28.  
    }
  29.  
     
  30.  
    public String getPassword() {
  31.  
    return password;
  32.  
    }
  33.  
     
  34.  
    public void setPassword(String password) {
  35.  
    this.password = password;
  36.  
    }
  37.  
     
  38.  
    public String getPhone() {
  39.  
    return phone;
  40.  
    }
  41.  
     
  42.  
    public void setPhone(String phone) {
  43.  
    this.phone = phone;
  44.  
    }
  45.  
     
  46.  
    public String getAddress() {
  47.  
    return address;
  48.  
    }
  49.  
     
  50.  
    public void setAddress(String address) {
  51.  
    this.address = address;
  52.  
    }
  53.  
     
  54.  
    @Override
  55.  
    public String toString() {
  56.  
    return "User{"
  57.  
    "uid=" uid
  58.  
    ", username='" username '\''
  59.  
    ", password='" password '\''
  60.  
    ", phone='" phone '\''
  61.  
    ", address='" address '\''
  62.  
    '}';
  63.  
    }
  64.  
    }
学新通

UserDaoImpl中写登录和注册的代码

  1.  
    package dao;
  2.  
     
  3.  
    import bean.User;
  4.  
    import util.JDBCUtil;
  5.  
     
  6.  
    import java.sql.Connection;
  7.  
    import java.sql.PreparedStatement;
  8.  
    import java.sql.ResultSet;
  9.  
     
  10.  
    public class UserDaoImpl{
  11.  
    private Connection con=null;//数据库连接对象
  12.  
    private PreparedStatement ps=null;//预处理对象
  13.  
    private ResultSet rs=null;//结果集对象
  14.  
    private int row=0;//增删改受影响的行数
  15.  
     
  16.  
    User login=null;
  17.  
     
  18.  
    public User login(String username, String password) {
  19.  
    try {
  20.  
    con= JDBCUtil.getCon();
  21.  
    //3.定义sql语句
  22.  
    String sql = "select * from t_user where username=? and password=?";
  23.  
    //4.获取预处理对象
  24.  
    ps = con.prepareStatement(sql);
  25.  
    //5.传参
  26.  
    ps.setObject(1, username);
  27.  
    ps.setObject(2, password);
  28.  
    //6.执行sql语句
  29.  
    rs = ps.executeQuery();
  30.  
    //7.结果集处理
  31.  
    if (rs.next()) {
  32.  
    login=new User();
  33.  
    //从结果集获取数据 ,封装到实体类对象中
  34.  
    int uid=rs.getInt("uid");
  35.  
    login.setUid(uid);
  36.  
    login.setUsername(rs.getString("username"));
  37.  
    login.setPassword(rs.getString("password"));
  38.  
    login.setPhone(rs.getString("phone"));
  39.  
    login.setAddress(rs.getString("address"));
  40.  
    }
  41.  
     
  42.  
    }catch (Exception e){
  43.  
    e.printStackTrace();
  44.  
    }finally {
  45.  
    JDBCUtil.close(rs,ps,con);
  46.  
    }
  47.  
    return login;
  48.  
    }
  49.  
     
  50.  
     
  51.  
    public int register(User user) {
  52.  
    try {
  53.  
    //1.获取数据库连接
  54.  
    con= JDBCUtil.getCon();
  55.  
    //2.定义sql语句
  56.  
    String sql="insert into t_user(username,password,phone,address) values(?,?,?,?)";
  57.  
    //3.获取预处理对象
  58.  
    ps=con.prepareStatement(sql);
  59.  
    //4.传参
  60.  
    ps.setObject(1,user.getUsername());
  61.  
    ps.setObject(2,user.getPassword());
  62.  
    ps.setObject(3,user.getPhone());
  63.  
    ps.setObject(4,user.getAddress());
  64.  
    //5.执行sql
  65.  
    row=ps.executeUpdate();
  66.  
    }catch (Exception e){
  67.  
    e.printStackTrace();
  68.  
    }finally {
  69.  
    JDBCUtil.close(ps,con);
  70.  
    }
  71.  
    return row;
  72.  
    }
  73.  
    }
学新通

JDBCUtil关闭数据库的媒介

  1.  
    package util;
  2.  
     
  3.  
    import java.sql.Connection;
  4.  
    import java.sql.DriverManager;
  5.  
    import java.sql.PreparedStatement;
  6.  
    import java.sql.ResultSet;
  7.  
     
  8.  
    public class JDBCUtil {
  9.  
    private static String driver="com.mysql.cj.jdbc.Driver";
  10.  
    private static String url="jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC";
  11.  
    private static String user="root";
  12.  
    private static String password="root";
  13.  
    private static Connection con=null;
  14.  
    private static PreparedStatement ps=null;
  15.  
    private static ResultSet rs=null;
  16.  
     
  17.  
    public static Connection getCon(){
  18.  
    try {
  19.  
    //1.加载数据库驱动
  20.  
    Class.forName(driver);
  21.  
    //2.获取数据库连接对象
  22.  
    con= DriverManager.getConnection(url,user,password);
  23.  
     
  24.  
    }catch (Exception e){
  25.  
    e.printStackTrace();
  26.  
    }
  27.  
    return con;
  28.  
    }
  29.  
     
  30.  
    public static void close(ResultSet rs,PreparedStatement ps,Connection con){
  31.  
    try {
  32.  
    if (rs!=null){
  33.  
    rs.close();
  34.  
    }
  35.  
    if (ps!=null){
  36.  
    ps.close();
  37.  
    }
  38.  
    if (con!=null){
  39.  
    con.close();
  40.  
    }
  41.  
    }catch (Exception e){
  42.  
    e.printStackTrace();
  43.  
    }
  44.  
    }
  45.  
     
  46.  
    public static void close(PreparedStatement ps,Connection con){
  47.  
    try {
  48.  
    if (ps!=null){
  49.  
    ps.close();
  50.  
    }
  51.  
    if (con!=null){
  52.  
    con.close();
  53.  
    }
  54.  
    }catch (Exception e){
  55.  
    e.printStackTrace();
  56.  
    }
  57.  
    }
  58.  
    }
学新通

在web.xml中获取请求

  1.  
    <?xml version="1.0" encoding="UTF-8"?>
  2.  
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  3.  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.  
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  5.  
    version="4.0">
  6.  
    <servlet>
  7.  
    <servlet-name>login</servlet-name>
  8.  
    <servlet-class>Zuoye.Login</servlet-class>
  9.  
    </servlet>
  10.  
    <servlet-mapping>
  11.  
    <servlet-name>login</servlet-name>
  12.  
    <url-pattern>/login</url-pattern>
  13.  
    </servlet-mapping>
  14.  
    </web-app>

在Login类中连接数据库

  1.  
    package Zuoye;
  2.  
     
  3.  
    import bean.User;
  4.  
     
  5.  
    import javax.servlet.ServletException;
  6.  
    import javax.servlet.http.HttpServlet;
  7.  
    import javax.servlet.http.HttpServletRequest;
  8.  
    import javax.servlet.http.HttpServletResponse;
  9.  
    import java.io.IOException;
  10.  
    import java.sql.Connection;
  11.  
    import java.sql.DriverManager;
  12.  
    import java.sql.PreparedStatement;
  13.  
    import java.sql.ResultSet;
  14.  
     
  15.  
    public class Login extends HttpServlet {
  16.  
    @Override
  17.  
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  18.  
    doPost(req,resp);
  19.  
    }
  20.  
     
  21.  
    @Override
  22.  
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  23.  
    //设置请求和响应的编码
  24.  
    req.setCharacterEncoding("utf-8");//设置请求的编码
  25.  
    resp.setCharacterEncoding("utf-8");//设置响应的编码
  26.  
    resp.setContentType("text/html;charset=utf-8");//设置响应的文本格式和编码
  27.  
     
  28.  
    //获取请求参数
  29.  
    String username = req.getParameter("username");
  30.  
    String password = req.getParameter("password");
  31.  
     
  32.  
    //业务处理--JDBC操作
  33.  
    Connection con=null;//数据库连接对象
  34.  
    PreparedStatement pstm=null;//预处理对象
  35.  
    ResultSet rs=null;//结果集
  36.  
    User login=null;
  37.  
    try {
  38.  
    //加载驱动包
  39.  
    Class.forName("com.mysql.cj.jdbc.Driver");
  40.  
    //获取数据库连接对象
  41.  
    con= DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mydb?useSSL=false&serverTimezone=UTC","root","root");
  42.  
    //定义sql语句
  43.  
    String sql="select * from t_user where username=? and password=?";
  44.  
    //获取预处理对象
  45.  
    pstm = con.prepareStatement(sql);
  46.  
    //传参
  47.  
    pstm.setObject(1,username);
  48.  
    pstm.setObject(2,password);
  49.  
    //执行SQL
  50.  
    rs=pstm.executeQuery();
  51.  
    //结果集处理
  52.  
    if (rs.next()){
  53.  
    login=new User();
  54.  
    //结果集中获取数据,封装到实体类对象中
  55.  
    int uid = rs.getInt("uid");
  56.  
    login.setUid(uid);
  57.  
    login.setUsername(rs.getString("username"));
  58.  
    login.setPassword(rs.getString("password"));
  59.  
    login.setPhone(rs.getString("phone"));
  60.  
    login.setAddress(rs.getString("address"));
  61.  
    }
  62.  
    }catch (Exception e){
  63.  
    e.printStackTrace();
  64.  
    }finally {
  65.  
    //关闭资源
  66.  
    try {
  67.  
    if (rs!=null){
  68.  
    rs.close();
  69.  
    }
  70.  
    if (pstm!=null){
  71.  
    pstm.close();
  72.  
    }
  73.  
    if (con!=null){
  74.  
    con.close();
  75.  
    }
  76.  
    }catch (Exception e){
  77.  
    e.printStackTrace();
  78.  
    }
  79.  
    }
  80.  
    //判断登录的用户信息是否为空
  81.  
    if (login!=null){
  82.  
    //登陆成功 跳转到主页
  83.  
    resp.sendRedirect("zhuye.jsp");
  84.  
    }else{
  85.  
    //登陆失败 跳转到错误页面
  86.  
    resp.sendRedirect("error.jsp");
  87.  
    }
  88.  
    }
  89.  
    }
学新通

注册

页面

  1.  
    <%--
  2.  
    Created by IntelliJ IDEA.
  3.  
    User: Lenovo
  4.  
    Date: 2023/2/18
  5.  
    Time: 16:55
  6.  
    To change this template use File | Settings | File Templates.
  7.  
    --%>
  8.  
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  9.  
    <html>
  10.  
    <head>
  11.  
    <title>注册页面</title>
  12.  
    </head>
  13.  
    <body>
  14.  
    <h1>进行注册</h1>
  15.  
    <form action="register" method="post">
  16.  
    账号:<input type="text" name="username" value="" /><br/>
  17.  
    密码:<input type="password" name="password" value="" /><br/>
  18.  
    电话:<input type="text" name="phone" value="" /><br/>
  19.  
    地址:<input type="text" name="address" value="" /><br/>
  20.  
    <input type="submit" value="注册">
  21.  
    <a href="login.jsp">已有账号,去登录</a>
  22.  
    </form>
  23.  
    </body>
  24.  
    </html>
学新通

运行的代码

  1.  
    package servlet;
  2.  
     
  3.  
    import bean.User;
  4.  
    import dao.UserDaoImpl;
  5.  
     
  6.  
    import javax.servlet.ServletException;
  7.  
    import javax.servlet.annotation.WebServlet;
  8.  
    import javax.servlet.http.HttpServlet;
  9.  
    import javax.servlet.http.HttpServletRequest;
  10.  
    import javax.servlet.http.HttpServletResponse;
  11.  
    import java.io.IOException;
  12.  
     
  13.  
    @WebServlet("/register")
  14.  
    public class Register extends HttpServlet {
  15.  
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  16.  
    doPost(req, resp);
  17.  
    }
  18.  
     
  19.  
    @Override
  20.  
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  21.  
    //设置请求和响应的编码
  22.  
    req.setCharacterEncoding("utf-8"); //设置请求的编码
  23.  
    resp.setCharacterEncoding("utf-8"); //设置响应的编码
  24.  
     
  25.  
    //获取请求参数
  26.  
    String username = req.getParameter("username");
  27.  
    String password = req.getParameter("password");
  28.  
    String phone = req.getParameter("phone");
  29.  
    String address = req.getParameter("address");
  30.  
    //封装到User对象中
  31.  
    User user = new User();
  32.  
    user.setUsername(username);
  33.  
    user.setPassword(password);
  34.  
    user.setPhone(phone);
  35.  
    user.setAddress(address);
  36.  
     
  37.  
    System.out.println(user);
  38.  
     
  39.  
    //JDBC操作
  40.  
    UserDaoImpl userDao = new UserDaoImpl();
  41.  
    int row = userDao.register(user);
  42.  
     
  43.  
    //做出响应
  44.  
    if (row > 0) {
  45.  
    //注册成功
  46.  
    resp.sendRedirect("login.jsp");
  47.  
    } else {
  48.  
    //注册失败
  49.  
    resp.sendRedirect("register.jsp");
  50.  
    }
  51.  
    }
  52.  
    }
学新通

将数据库显示到页面

后台获取数据

  1.  
    HttpSession session=request.getSession();
  2.  
    session.setAttribute("goodsList",goodsList);

导入jstl核心类库

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

通过el表达式展示

  1.  
    <h2>欢迎来到${user.address}的${user.username}的页面!</h2>
  2.  
    <table>
  3.  
    <tr>
  4.  
    <th>商品编号</th>
  5.  
    <th>商品名称</th>
  6.  
    <th>商品价格</th>
  7.  
    <th>商品说明</th>
  8.  
    </tr>
  9.  
    <c:forEach items="${goodsList}" var="goods">
  10.  
    <tr>
  11.  
    <td>${goods.gid}</td>
  12.  
    <td>${goods.gname}</td>
  13.  
    <td>${goods.price}</td>
  14.  
    <td>${goods.mark}</td>
  15.  
    </tr>
  16.  
    </c:forEach>
  17.  
    </table>
学新通

新增数据

添加页面

  1.  
    <%--
  2.  
    Created by IntelliJ IDEA.
  3.  
    User: Lenovo
  4.  
    Date: 2023/2/15
  5.  
    Time: 11:13
  6.  
    To change this template use File | Settings | File Templates.
  7.  
    --%>
  8.  
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  9.  
    <html>
  10.  
    <head>
  11.  
    <title>商品信息添加</title>
  12.  
    </head>
  13.  
    <body>
  14.  
    <h2>商品信息录入</h2>
  15.  
    <form action="addGoods" method="post">
  16.  
    商品名称: <input type="text" name="gname" value="" /><br/>
  17.  
    商品价格: <input type="number" step="0.01" name="price" value="" /><br/>
  18.  
    商品说明: <input type="text" name="mark" value="" />&nbsp;&nbsp;&nbsp;<br/>
  19.  
    <input type="submit" value="提交">
  20.  
    </form>
  21.  
    </body>
  22.  
    </html>
学新通

在GoodsDao中写入add方法

  1.  
    public int add(Goods goods) {
  2.  
    try {
  3.  
    //1.获取数据库连接
  4.  
    con= JDBCUtil.getCon();
  5.  
    //2.定义sql语句
  6.  
    String sql="insert into t_goods(gname,price,mark) values(?,?,?)";
  7.  
    //3.获取预处理对象
  8.  
    ps=con.prepareStatement(sql);
  9.  
    //4.传参
  10.  
    ps.setObject(1,goods.getGname());
  11.  
    ps.setObject(2,goods.getPrice());
  12.  
    ps.setObject(3,goods.getMark());
  13.  
    //5.执行sql
  14.  
    row=ps.executeUpdate();
  15.  
    }catch (Exception e){
  16.  
    e.printStackTrace();
  17.  
    }finally {
  18.  
    JDBCUtil.close(rs,ps,con);
  19.  
    }
  20.  
    return row;
  21.  
    }
学新通

添加的运行代码

  1.  
    package servlet;
  2.  
     
  3.  
    import bean.Goods;
  4.  
    import dao.GoodsDao;
  5.  
     
  6.  
    import javax.servlet.ServletException;
  7.  
    import javax.servlet.annotation.WebServlet;
  8.  
    import javax.servlet.http.HttpServlet;
  9.  
    import javax.servlet.http.HttpServletRequest;
  10.  
    import javax.servlet.http.HttpServletResponse;
  11.  
    import java.io.IOException;
  12.  
     
  13.  
    @WebServlet("/addGoods")
  14.  
    public class AddGoods extends HttpServlet {
  15.  
    @Override
  16.  
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  17.  
    super.doGet(req, resp);
  18.  
    }
  19.  
     
  20.  
    @Override
  21.  
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  22.  
    req.setCharacterEncoding("utf-8");
  23.  
    resp.setCharacterEncoding("utf-8");
  24.  
     
  25.  
    Goods goods=new Goods();
  26.  
    goods.setGname(req .getParameter("gname"));
  27.  
    goods.setPrice(Double.parseDouble(req.getParameter("price"))); //获欧字符中数字转换double数据
  28.  
    goods.setMark(req.getParameter("mark"));
  29.  
     
  30.  
    GoodsDao goodsDao=new GoodsDao();
  31.  
    int row = goodsDao.add(goods);
  32.  
    // System.out.println(row);
  33.  
    if(row>0) {
  34.  
    req.getRequestDispatcher("SelectAllGodds").forward(req, resp);
  35.  
    }else{
  36.  
    // req.setAttribute("error_msg","添加商品信息失败!");
  37.  
    req.getRequestDispatcher("error.jsp").forward(req,resp);
  38.  
    }
  39.  
    }
  40.  
    }
学新通

删除数据

在主页面添加删除标签

学新通

在GoodsDao中写入deleteById方法

  1.  
    public int deleteById(int gid) {
  2.  
    try {
  3.  
    //1.获取数据库连接
  4.  
    con= JDBCUtil.getCon();
  5.  
    //2.定义sql语句
  6.  
    String sql="delete from t_goods where gid=?";
  7.  
    //3.获取预处理对象
  8.  
    ps=con.prepareStatement(sql);
  9.  
    //4.传参
  10.  
    ps.setObject(1,gid);
  11.  
    //5.执行sql
  12.  
    row=ps.executeUpdate();
  13.  
    }catch (Exception e){
  14.  
    e.printStackTrace();
  15.  
    }finally {
  16.  
    JDBCUtil.close(rs,ps,con);
  17.  
    }
  18.  
    return row;
  19.  
    }
  20.  
    }
学新通

删除的运行代码

  1.  
    package servlet;
  2.  
     
  3.  
    import dao.GoodsDao;
  4.  
     
  5.  
    import javax.servlet.ServletException;
  6.  
    import javax.servlet.annotation.WebServlet;
  7.  
    import javax.servlet.http.HttpServlet;
  8.  
    import javax.servlet.http.HttpServletRequest;
  9.  
    import javax.servlet.http.HttpServletResponse;
  10.  
    import java.io.IOException;
  11.  
     
  12.  
    @WebServlet("/del")
  13.  
    public class DelGoods extends HttpServlet {
  14.  
    @Override
  15.  
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  16.  
    doPost(req,resp);
  17.  
    }
  18.  
     
  19.  
    @Override
  20.  
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  21.  
    int gid=Integer.parseInt(req.getParameter("gid"));
  22.  
    //根id执行数据库的删除
  23.  
    GoodsDao goodsDao=new GoodsDao() ;
  24.  
    int row = goodsDao.deleteById(gid);
  25.  
    if(row>0) {
  26.  
    //请求转发,查询所有商品信息(刷新)
  27.  
    req.getRequestDispatcher("SelectAllGodds").forward(req,resp);
  28.  
    } else{
  29.  
    req.setAttribute("error_msg","删除出现了问题!");
  30.  
    req.getRequestDispatcher("error.jsp").forward(req,resp);
  31.  
    }
  32.  
    }
  33.  
    }
学新通

修改数据

在主页面添加修改标签属性

学新通

修改页面

  1.  
    <%--
  2.  
    Created by IntelliJ IDEA.
  3.  
    User: Lenovo
  4.  
    Date: 2023/2/15
  5.  
    Time: 11:13
  6.  
    To change this template use File | Settings | File Templates.
  7.  
    --%>
  8.  
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  9.  
    <html>
  10.  
    <head>
  11.  
    <title>商品信息修改</title>
  12.  
    </head>
  13.  
    <body>
  14.  
    <h2>商品信息修改</h2>
  15.  
    <form action="UpdateGoods" method="post">
  16.  
    商品编号: <input type="text" name="gid" value="${goods.gid}" readonly="readonly" placeholder="商品编号"/><br/>
  17.  
    商品名称: <input type="text" name="gname" value="${goods.gname}" placeholder="商品名称" /><br/>
  18.  
    商品价格: <input type="number" step="0.01" name="price" value="${goods.price}" placeholder="商品价格"/><br/>
  19.  
    商品说明: <input type="text" name="mark" value="${goods.mark}" placeholder="商品说明"/>&nbsp;&nbsp;&nbsp;<br/>
  20.  
    <input type="submit" value="修改">
  21.  
    </form>
  22.  
    </body>
  23.  
    </html>
学新通

 获取数据库操作

  1.  
    public Goods selectById(int gid) {
  2.  
    Goods goods=new Goods();
  3.  
    List<Goods> goodslist=new ArrayList<>();
  4.  
    try {
  5.  
    con = JDBCUtil.getCon();
  6.  
    String sql = "select * from t_goods where gid=?";
  7.  
    ps = con.prepareStatement(sql);
  8.  
    ps.setObject(1,gid);
  9.  
    rs = ps.executeQuery();
  10.  
    while (rs.next()) {
  11.  
    //把当前数据行中的数据取出来,存储到Goods对象中
  12.  
    goods.setGid(rs.getInt("gid"));
  13.  
    goods.setGname(rs.getString("gname"));
  14.  
    goods.setPrice(rs.getDouble("price"));
  15.  
    goods.setMark(rs.getString("mark"));
  16.  
    //把Goods对象存储到集合中
  17.  
    goodslist.add(goods);
  18.  
    }
  19.  
    } catch (Exception e) {
  20.  
    e.printStackTrace();
  21.  
    } finally {
  22.  
    try{
  23.  
    if(rs!=null) {
  24.  
    rs.close();
  25.  
    }
  26.  
    if(ps!=null) {
  27.  
    ps.close();
  28.  
    }
  29.  
    if(con!=null){
  30.  
    con.close();
  31.  
    }
  32.  
    } catch (Exception e){
  33.  
    e.printStackTrace();
  34.  
    }
  35.  
    }
  36.  
    return goods;
  37.  
    }
学新通

存入request域中

  1.  
    package servlet;
  2.  
     
  3.  
    import bean.Goods;
  4.  
    import dao.GoodsDao;
  5.  
     
  6.  
    import javax.servlet.ServletException;
  7.  
    import javax.servlet.annotation.WebServlet;
  8.  
    import javax.servlet.http.HttpServlet;
  9.  
    import javax.servlet.http.HttpServletRequest;
  10.  
    import javax.servlet.http.HttpServletResponse;
  11.  
    import java.io.IOException;
  12.  
     
  13.  
    @WebServlet("/FindByid")
  14.  
    public class FindByid extends HttpServlet {
  15.  
    @Override
  16.  
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  17.  
    doPost(req, resp);
  18.  
    }
  19.  
     
  20.  
    @Override
  21.  
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  22.  
    int gid=Integer.parseInt(req.getParameter("gid"));
  23.  
    //根据gid查询商品信息
  24.  
    GoodsDao goodsDao=new GoodsDao();
  25.  
    Goods goods=goodsDao.selectById(gid);
  26.  
    System.out.println(goods);
  27.  
    if(goods!=null){
  28.  
    //查询商品信息成功,在入request城中,然后请求转发到页面展示数据
  29.  
    req.setAttribute("goods",goods);
  30.  
    req.getRequestDispatcher("showGoods.jsp").forward(req,resp);
  31.  
    }else {
  32.  
    req.setAttribute("error_msg","修改出了异常!");
  33.  
    req.getRequestDispatcher("error.jsp").forward(req,resp);
  34.  
    }
  35.  
    }
  36.  
    }
学新通

修改数据的数据库操作

  1.  
    public int upda(Goods goods){
  2.  
    try {
  3.  
    con= JDBCUtil.getCon();
  4.  
    //编写sql语句
  5.  
    String sql="update t_goods set gname=?,price=?,mark=? where gid=?";
  6.  
    //获取预处理对象
  7.  
    ps = con.prepareStatement(sql);
  8.  
    //传参
  9.  
    ps.setObject(1,goods.getGname());
  10.  
    ps.setObject(2,goods.getPrice());
  11.  
    ps.setObject(3,goods.getMark());
  12.  
    ps.setObject(4,goods.getGid());
  13.  
    //执行sql语句
  14.  
    row= ps.executeUpdate();
  15.  
     
  16.  
    }catch (Exception e){
  17.  
    e.printStackTrace();
  18.  
    }finally {
  19.  
    JDBCUtil.close(ps,con);
  20.  
    }
  21.  
    return row;
  22.  
    }
学新通

点击修改后跳转到后台请求

  1.  
    package servlet;
  2.  
     
  3.  
     
  4.  
    import bean.Goods;
  5.  
    import dao.GoodsDao;
  6.  
     
  7.  
    import javax.servlet.ServletException;
  8.  
    import javax.servlet.annotation.WebServlet;
  9.  
    import javax.servlet.http.HttpServlet;
  10.  
    import javax.servlet.http.HttpServletRequest;
  11.  
    import javax.servlet.http.HttpServletResponse;
  12.  
    import java.io.IOException;
  13.  
     
  14.  
    @WebServlet("/UpdateGoods")
  15.  
    public class UpdateGoods extends HttpServlet {
  16.  
    @Override
  17.  
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  18.  
    doPost(req, resp);
  19.  
    }
  20.  
    @Override
  21.  
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  22.  
    req.setCharacterEncoding("utf-8");
  23.  
    resp.setCharacterEncoding("utf-8");
  24.  
     
  25.  
    //获取表单提交的数据,封装到qods对象中
  26.  
    Goods goods=new Goods();
  27.  
    goods.setGid(Integer.parseInt(req.getParameter("gid")));
  28.  
    goods.setGname(req.getParameter("gname"));
  29.  
    goods.setPrice(Double.parseDouble(req.getParameter( "price")));
  30.  
    goods.setMark(req.getParameter("mark"));
  31.  
     
  32.  
    System.out.println(goods);
  33.  
     
  34.  
    //执行数据库JDBC的修改操作
  35.  
    GoodsDao goodsDao=new GoodsDao();
  36.  
    int row=goodsDao.upda(goods);
  37.  
     
  38.  
    if(row>0){
  39.  
    req.getRequestDispatcher("SelectAllGodds").forward(req,resp);
  40.  
    }else {
  41.  
    req.setAttribute("error_msg","修改出了异常");
  42.  
    req.getRequestDispatcher("error.jsp").forward(req,resp);
  43.  
    }
  44.  
    }
  45.  
    }
学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgfafkf
系列文章
更多 icon
同类精品
更多 icon
继续加载