2016-10-30 5 views
0

일부 텍스트 필드를 데이터베이스의 데이터베이스로 유지하려는 데이터가 있습니다. 나는 db로부터 데이터를 얻는 메소드를 생성한다. 나는 open-account.jsp 페이지를 가지고 있는데, 여기서 서블릿에서 get 메소드를 사용하기 위해 이름, 성 및 이메일이 이미 데이터베이스에서 미리 채워져있는 양식이있다. 서블릿에서 jsp 페이지로 데이터를 보내려고하면 해당 필드는 null입니다. 서블릿에서 jsp로 데이터를 전달하지 않는다고 생각합니다. 확실하지 않습니다. 여기 내 코드입니다 :서블릿에서 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; 
    } 

오픈 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> 

OpenAccount의 serlvet

@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 
    { 

    } 
} 

답변

0
  • 에서 차의 목록을 가져옵니다 request, 캐스팅을해야합니다. r jsp
  • 코드에서 User 인스턴스 만 필요하고 코드는 ArrayListUser으로 전달됩니다.
  • 코드 스 니펫은 필요한 정보를 추출하기 위해 수행해야 할 작업을 이해하기위한 것입니다.

    // 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."); 
    } 
    

P.S. jsp scriplets를 사용하는 것은 나쁜 습관입니다. 대신 JSTL을 사용할 수 있습니다.

-1

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; 
    } 

오픈 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> 

OpenAccount의 serlvet :

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")); 
    } 
} 

내가 수정하여 예를 들어 post

을 참조하여 서블릿 컨테이너에서 실행하십시오. 그냥 초보자 인 경우

내가 강력하게 당신에게 Servlet 3 tutorial

희망이 도움의 시리즈를 추천합니다!

관련 문제