Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从servlet在jsp中填写文本字段数据_Jsp_Servlets - Fatal编程技术网

从servlet在jsp中填写文本字段数据

从servlet在jsp中填写文本字段数据,jsp,servlets,Jsp,Servlets,我有一个数据库中的数据,我希望一些文本字段来自数据库。我创建了一个从数据库获取数据的方法。我有一个open-account.jsp页面,其中有一个表单,其中的名字、姓氏和电子邮件已经从数据库中预先填充,因此我使用servlet中的get方法。当我尝试将数据从servlet发送到jsp页面时,字段为null。我认为它没有将数据从servlet传递到jsp,我不确定。这是我的密码: 数据库类: public static ArrayList getUsers() { Arr

我有一个数据库中的数据,我希望一些文本字段来自数据库。我创建了一个从数据库获取数据的方法。我有一个open-account.jsp页面,其中有一个表单,其中的名字、姓氏和电子邮件已经从数据库中预先填充,因此我使用servlet中的get方法。当我尝试将数据从servlet发送到jsp页面时,字段为null。我认为它没有将数据从servlet传递到jsp,我不确定。这是我的密码:

数据库类:

public static ArrayList getUsers() 
    {
        ArrayList<Users> userList = new ArrayList<>();

        try
        {
            DBConnection.connectToDB();
            String query = "SELECT * FROM userlogin";

            stmt = DBConnection.conn.prepareStatement(query);
            ResultSet rs = stmt.executeQuery();

            while(rs.next())
            {
                Users user = new Users();
                user.setFirstName(rs.getString("firstname"));
                user.setLastName(rs.getString("lastname"));
                user.setEmail(rs.getString("email"));
                user.setUsername(rs.getString("username"));
                user.setPassword(rs.getString("password"));

                userList.add(user);
            }
        }
        catch(Exception e)
        {
            System.out.println(e);
        }

        return userList;
    }
publicstaticarraylistgetusers()
{
ArrayList userList=新的ArrayList();
尝试
{
DBConnection.connectToDB();
String query=“从用户登录中选择*”;
stmt=DBConnection.conn.prepareStatement(查询);
ResultSet rs=stmt.executeQuery();
while(rs.next())
{
用户=新用户();
user.setFirstName(rs.getString(“firstname”);
user.setLastName(rs.getString(“lastname”);
user.setEmail(rs.getString(“email”);
user.setUsername(rs.getString(“用户名”);
user.setPassword(rs.getString(“password”);
添加(用户);
}
}
捕获(例外e)
{
系统输出打印ln(e);
}
返回用户列表;
}
open-account.jsp

<!DOCTYPE html>
<html>
<head>
    <title>Open Account</title>
</head>
<body>
    <h3>Please fill in the details</h3>

    <form name="openAccount" action="OpenAccount" method="GET">
        <!-- in openaccount servlet, we will get the users info and fill some
        of the forms below for them -->

        First Name: <input type="text" name="firstname" value= <%= request.getAttribute("Users.getFirstName()") %> > <br/><br/>
        Last Name: <input type="text" name="lastname"> <br/><br/>
        Email: <input type="text" name="email">  <br/><br/>

    </form>

    <form name="chooseAccount" action="OpenAccount" method="POST">  
        Select the type of account: 
        <select name="accounttype">
            <option>Checking</option>
            <option>Saving</option>
            <option>Money Market</option>
            <option>Credit Card</option>
        </select> <br/><br/>

        Please check the box if everything above is complete:
        Agree <input type="radio" name="agree" value="Agree">
        Disagree <input type="radio" name="agree" value="Disagree">

        <br/><br/>
        <input type="submit" value="submit" name="Submit">
    </form>
</body>
</html>

开户
请填写详细资料
名字:

姓氏:

电子邮件:

选择帐户类型: 检查 节省物 货币市场 信用卡

如果以上所有内容都已完成,请勾选此框: 同意 不同意

开放帐户服务器

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

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        ArrayList<Users> userList = DBConnection.getUsers();

        request.setAttribute("Users", userList);
        RequestDispatcher dispatcher = request.getRequestDispatcher("open-account.jsp");
        dispatcher.forward(request, response);

    }

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

    }
}
@WebServlet(“/OpenAccount”)
公共类OpenAccount扩展了HttpServlet
{
私有静态最终长serialVersionUID=1L;
受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException
{
ArrayList userList=DBConnection.getUsers();
setAttribute(“用户”,userList);
RequestDispatcher=request.getRequestDispatcher(“open account.jsp”);
转发(请求、响应);
}
受保护的void doPost(HttpServletRequest请求、HttpServletResponse响应)引发ServletException、IOException
{
}
}
  • 为了从
    请求
    中获取列表,您需要在jsp中执行强制转换
  • 在jsp中,只需要一个
    User
    实例,而您的代码将传递
    User
    的整个
    ArrayList
  • 代码片段只是为了理解提取所需信息需要做什么

    // make sure to import all required class
    Object users = request.getAttribute('Users');
    if(null != users && users instanceof ArrayList){
       ArrayList<User> userList = (ArrayList<User>)request.getAttribute('Users');
       for(User user: userList){
          out.println(user.getFirstName());
       }
    } else {
       out.println("No user records found.");
    }
    
    //确保导入所有必需的类
    objectusers=request.getAttribute('users');
    if(null!=用户和用户实例ArrayList){
    ArrayList userList=(ArrayList)request.getAttribute('Users');
    for(用户:userList){
    out.println(user.getFirstName());
    }
    }否则{
    out.println(“未找到用户记录”);
    }
    

另外,使用jsp scriplets是不好的做法,您可以使用JSTL来代替。

让我们看看您的jsp页面。似乎您只想显示用户配置文件而不是用户配置文件列表。因此,您应该修改代码,如下所示:

数据库类:

public static Users getUsers(String username) 
    {
        Users user = new Users();
        try
        {
            DBConnection.connectToDB();
            String query = "SELECT * FROM userlogin where username=?";

            stmt = DBConnection.conn.prepareStatement(query);
            stmt.setString(1,username);
            ResultSet rs = stmt.executeQuery();

            while(rs.next())
            {
                user.setFirstName(rs.getString("firstname"));
                user.setLastName(rs.getString("lastname"));
                user.setEmail(rs.getString("email"));
                user.setUsername(rs.getString("username"));
                user.setPassword(rs.getString("password"));

            }
        }
        catch(Exception e)
        {
            System.out.println(e);
        }

        return user;
    }
open-account.jsp:

<!DOCTYPE html>
<html>
<head>
    <title>Open Account</title>
</head>
<body>
    <h3>Please fill in the details</h3>

    <form name="chooseAccount" action="OpenAccount" method="POST">  

        <!-- in openaccount servlet, we will get the users info and fill some
        of the forms below for them -->

        First Name: <input type="text" name="firstname" value= <%= request.getAttribute("firstname") %> > <br/><br/>
        Last Name: <input type="text" name="lastname" value= <%= request.getAttribute("lastname") %>> <br/><br/>
        Email: <input type="text" name="email" value= <%= request.getAttribute("email") %>>  <br/><br/>


        Select the type of account: 
        <select name="accounttype">
            <option>Checking</option>
            <option>Saving</option>
            <option>Money Market</option>
            <option>Credit Card</option>
        </select> <br/><br/>

        Please check the box if everything above is complete:
        Agree <input type="radio" name="agree" value="Agree">
        Disagree <input type="radio" name="agree" value="Disagree">

        <br/><br/>
        <input type="submit" value="submit" name="Submit">
    </form>
</body>
</html>
我修改了您的示例,并通过参考

如果你只是一个初学者,我强烈推荐你的系列

希望这有帮助

package com.javabycode;

import java.io.IOException;
import java.util.ArrayList;

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;

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

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {        
    Users users = DBConnection.getUsers();

    request.setAttribute("firstname", users.getFirstName());
    request.setAttribute("lastname", users.getLastName());
    request.setAttribute("email", users.getEmail());
    RequestDispatcher dispatcher = request.getRequestDispatcher("open-account.jsp");
    dispatcher.forward(request, response);

    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    {
     // do something
     //System.out.println(request.getAttribute("firstname"));
    }
}