如何使用jstl标记搜索数据库并在jsp文件中显示

如何解决如何使用jstl标记搜索数据库并在jsp文件中显示

我尝试使用jstl标记搜索数据库,但无法正常工作。 到目前为止,我管理的是使其显示为空消息。 我对Java这方面很陌生,因此,如果您有任何建议,请尝试详细解释。 谢谢 enter image description here

我的代码如下:

user-list.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>    
    <%@ page isELIgnored="false"%>

   <html>
  <head>
<title>User Management Application</title>
<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T"
crossorigin="anonymous">
</head>
         <sql:setDataSource var="snapshot" driver="com.mysql.jdbc.Driver"
           url="jdbc:mysql://localhost:3306/dbname2?allowPublicKeyRetrieval=true&useSSL=false"
             user="root"  password="root"/>
<body>

<header>
    <nav class="navbar navbar-expand-md navbar-dark"
        style="background-color: tomato">
        <div>
            <a href="" class="navbar-brand"> User
                Management App </a>
        </div>

        <ul class="navbar-nav">
            <li><a href="<%=request.getContextPath()%>/list"
                class="nav-link">Users</a></li>
        </ul>
      </nav>
     </header>
   <br>

<div class="row">
    <!-- <div class="alert alert-success" *ngIf='message'>{{message}}</div> -->

    <div class="container">
        <h3 class="text-center">List of Users</h3>
        <hr>
        <div class="container text-left">

            <a href="<%=request.getContextPath()%>/new" class="btn btn-success">Add
                New User</a>
        </div>
        

        <form name="userForm" action="user-list.jsp" method="post">
        
              <div class="container text-center">
           
           
              <input type="text" class="form-group" name="search" value="<%=request.getParameter("id")%>" placeholder="Name" style="width: 400px;">
                <INPUT TYPE ="submit">
            
              </div> 
        </form>
        
        <br>
        <table class="table table-bordered">
            <thead>
                <tr>
                    <th>ID</th>      
                    <th>Name</th>
                    <th>Date</th>
                    <th>Time</th>
                    <th>Email</th>
                    <th>Country</th>
                    <th>Actions</th>
                </tr>
            </thead>
            <tbody>
                    
                <sql:query var="user" dataSource="${snapshot}">
                    select *from users where
                    id like '%<%=request.getParameter("id")%>%'
                    
                </sql:query>
                
                
                
                <c:forEach var="user" items="${listUser}">

                    <tr>
                        <td><c:out value="${user.id}" /></td> 
                        <td><c:out value="${user.name}" /></td>
                        <td><c:out value="${user.date}" /></td>
                        <td><c:out value="${user.time}" /></td>
                        <td><c:out value="${user.email}" /></td>
                        <td><c:out value="${user.country}" /></td>
                        <td><a href="edit?id=<c:out value='${user.id}' />">Edit</a>
                            &nbsp;&nbsp;&nbsp;&nbsp; <a
                            href="delete?id=<c:out value='${user.id}' />">Delete</a></td>
                    </tr>
                </c:forEach>
                <!-- } -->
            </tbody>
         
        </table>
    </div>
</div>
 

UserDAO类

    package com.project.usermanagement.dao;

    import java.sql.Connection;
    import java.sql.Date;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Time;
    import java.time.LocalDate;
    import java.time.LocalTime;
    import java.util.ArrayList;
    import java.util.List;

    import com.project.usermanagement.model.User;


    public class UserDAO {


public static Date getSQLDate(LocalDate date) {
    return java.sql.Date.valueOf(date);
}

public static LocalDate getUtilDate(Date sqlDate) {
    return sqlDate.toLocalDate();
}

public static Time getSQLTime(LocalTime time) {
    return java.sql.Time.valueOf(time);
}

public static LocalTime getUtilTime(Time sqlTime) {
    return sqlTime.toLocalTime();
}

private String jdbcURL = "jdbc:mysql://localhost:3306/dbname2?allowPublicKeyRetrieval=true&useSSL=false";
private String jdbcUsername = "root";
private String jdbcPassword = "root";

private static final String INSERT_USERS_SQL = "INSERT INTO users" + "  (name,date,time,email,country) VALUES " +
    " (?,?,?);";

private static final String SELECT_USER_BY_ID = "select id,name,country from users where id =?";
private static final String SELECT_ALL_USERS = "select * from users";
private static final String DELETE_USERS_SQL = "delete from users where id = ?;";
private static final String UPDATE_USERS_SQL = "update users set name = ?,date=?,time=?,email= ?,country =? where id = ?;";

public UserDAO() {}



protected Connection getConnection() {
    Connection connection = null;
    try {
        Class.forName("com.mysql.jdbc.Driver");
        connection = DriverManager.getConnection(jdbcURL,jdbcUsername,jdbcPassword);
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return connection;
}

public void insertUser(User user) throws SQLException {
    System.out.println(INSERT_USERS_SQL);
    // try-with-resource statement will auto close the connection.
    try (Connection connection = getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(INSERT_USERS_SQL)) {
        preparedStatement.setString(1,user.getName());
        preparedStatement.setDate(2,getSQLDate(user.getDate()));
        preparedStatement.setTime(3,getSQLTime(user.getTime()));
        preparedStatement.setString(4,user.getEmail());
        preparedStatement.setString(5,user.getCountry());
        System.out.println(preparedStatement);
        preparedStatement.executeUpdate();
    } catch (SQLException e) {
        printSQLException(e);
    }
}

public User selectUser(int id) {
    User user = null;
    // Step 1: Establishing a Connection
    try (Connection connection = getConnection();
        // Step 2:Create a statement using connection object
        PreparedStatement preparedStatement = connection.prepareStatement(SELECT_USER_BY_ID);) {
        preparedStatement.setInt(1,id);
        System.out.println(preparedStatement);
        // Step 3: Execute the query or update query
        ResultSet rs = preparedStatement.executeQuery();

        // Step 4: Process the ResultSet object.
        while (rs.next()) {
            String name = rs.getString("name");
            LocalDate date = rs.getDate("date").toLocalDate();
            LocalTime time = rs.getTime("time").toLocalTime();
            String email = rs.getString("email");
            String country = rs.getString("country");
            user = new User(id,country);
        }
    } catch (SQLException e) {
        printSQLException(e);
    }
    return user;
}

public List < User > selectAllUsers() {

    // using try-with-resources to avoid closing resources (boiler plate code)
    List < User > users = new ArrayList < > ();
    // Step 1: Establishing a Connection
    try (Connection connection = getConnection();

        // Step 2:Create a statement using connection object
        PreparedStatement preparedStatement = connection.prepareStatement(SELECT_ALL_USERS);) {
        System.out.println(preparedStatement);
        // Step 3: Execute the query or update query
        ResultSet rs = preparedStatement.executeQuery();

        // Step 4: Process the ResultSet object.
        while (rs.next()) {
            int id = rs.getInt("id");
            String name = rs.getString("name");
            LocalDate date = rs.getDate("date").toLocalDate();
            LocalTime time = rs.getTime("time").toLocalTime();
            String email = rs.getString("email");
            String country = rs.getString("country");
            users.add(new User(id,country));
        }
    } catch (SQLException e) {
        printSQLException(e);
    }
    return users;
}

public boolean deleteUser(int id) throws SQLException {
    boolean rowDeleted;
    try (Connection connection = getConnection(); PreparedStatement statement = connection.prepareStatement(DELETE_USERS_SQL);) {
        statement.setInt(1,id);
        rowDeleted = statement.executeUpdate() > 0;
    }
    return rowDeleted;
}

public boolean updateUser(User user) throws SQLException {
    boolean rowUpdated;
    try (Connection connection = getConnection(); PreparedStatement statement = connection.prepareStatement(UPDATE_USERS_SQL);) {
        statement.setString(1,user.getName());
        statement.setDate(2,getSQLDate(user.getDate()));
        statement.setTime(3,getSQLTime(user.getTime()));
        statement.setString(4,user.getEmail());
        statement.setString(5,user.getCountry());
        statement.setInt(6,user.getId());

        rowUpdated = statement.executeUpdate() > 0;
    }
    return rowUpdated;
}

private void printSQLException(SQLException ex) {
    for (Throwable e: ex) {
        if (e instanceof SQLException) {
            e.printStackTrace(System.err);
            System.err.println("SQLState: " + ((SQLException) e).getSQLState());
            System.err.println("Error Code: " + ((SQLException) e).getErrorCode());
            System.err.println("Message: " + e.getMessage());
            Throwable t = ex.getCause();
            while (t != null) {
                System.out.println("Cause: " + t);
                t = t.getCause();
            }
        }
    }
}

}

UserServlet类

    package com.project.usermanagement.web;

    import java.io.IOException;
    import java.sql.SQLException;
    import java.time.LocalDate;
    import java.time.LocalTime;
    import java.util.List;
    import javax.servlet.RequestDispatcher;
    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 com.project.usermanagement.dao.UserDAO;
    import com.project.usermanagement.model.User;


   @WebServlet("/")
   public class UserServlet extends HttpServlet {
   private static final long serialVersionUID = 1L;
   private UserDAO userDAO;

public void init() {
    userDAO = new UserDAO();
}

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

protected void doGet(HttpServletRequest request,IOException {
    String action = request.getServletPath();

    try {
        switch (action) {
            case "/new":
                showNewForm(request,response);
                break;
            case "/insert":
                insertUser(request,response);
                break;
            case "/delete":
                deleteUser(request,response);
                break;
            case "/edit":
                showEditForm(request,response);
                break;
            case "/update":
                updateUser(request,response);
                break;
            default:
                listUser(request,response);
                break;
        }
    } catch (SQLException ex) {
        throw new ServletException(ex);
    }
}

private void listUser(HttpServletRequest request,HttpServletResponse response)
throws SQLException,IOException,ServletException {
    List < User > listUser = userDAO.selectAllUsers();
    request.setAttribute("listUser",listUser);
    RequestDispatcher dispatcher = request.getRequestDispatcher("user-list.jsp");
    dispatcher.forward(request,response);
}

private void showNewForm(HttpServletRequest request,IOException {
    RequestDispatcher dispatcher = request.getRequestDispatcher("user-form.jsp");
    dispatcher.forward(request,response);
}

private void showEditForm(HttpServletRequest request,ServletException,IOException {
    int id = Integer.parseInt(request.getParameter("id"));
    User existingUser = userDAO.selectUser(id);
    RequestDispatcher dispatcher = request.getRequestDispatcher("user-form.jsp");
    request.setAttribute("user",existingUser);
    dispatcher.forward(request,response);

}

private void insertUser(HttpServletRequest request,IOException {
    String name = request.getParameter("name");
    String email = request.getParameter("email");
    String country = request.getParameter("country");
    User newUser = new User(name,LocalDate.now(),LocalTime.now(),country);
    userDAO.insertUser(newUser);
    response.sendRedirect("list");
}

private void updateUser(HttpServletRequest request,IOException {
    int id = Integer.parseInt(request.getParameter("id"));
    String name = request.getParameter("name");
    LocalDate date = LocalDate.parse(request.getParameter("date"));
    LocalTime time = LocalTime.parse(request.getParameter("time"));
    String email = request.getParameter("email");
    String country = request.getParameter("country");

    User book = new User(id,country);
    userDAO.updateUser(book);
    response.sendRedirect("list");
}

private void deleteUser(HttpServletRequest request,IOException {
    int id = Integer.parseInt(request.getParameter("id"));
    userDAO.deleteUser(id);
    response.sendRedirect("list");

}

}

解决方法

您可以使用表格发送要搜索的值。然后,使用${param.yourinputname}获得该值并将其传递给查询。当前,您输入的不正确名称为:{{1 }},但您使用name="search"的方法与此相同,它也会返回 null ,就像您在添加的输出中看到的那样。因此,您的 form ,如下所示:

id

现在,当表单提交时,将获得用户键入的值并将其传递给您的 query 。即:

<form name="userForm" action="user-list.jsp" method="post">
     <!--change value--> 
     <input type="text" class="form-group" name="search" value="${param.search}" placeholder="Name" style="width: 400px;">
    <input type ="submit">
</form>

并使用以下代码从查询中获取 结果

<sql:query var="user" dataSource="${snapshot}">
   select *from users where id LIKE '%'  ?   '%'
    <sql:param value="${param.search}" />
</sql:query>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-