2013-10-19 5 views
0

웹 프로젝트를 만들려고합니다. 내 질문에 JSTL을 사용하여 JSP 페이지에 자바 속성을 표시 할 수 있습니까? 나는 JSP로 아주 새롭다.
지금까지 저는 서블릿이 처리하는 로그인 페이지를 만들었습니다. 내가 원하는 것은 사용자가 자신의 자격 증명으로 로그인하는 것입니다. 또한 자격 증명을 기반으로 데이터가 백그라운드에서 처리되고 페이지에 표시됩니다. (로그인 사용자가 내 정보 페이지를 클릭하고 데이터가 자동으로 채워진 후). 다른 서블릿을 만드는 것은 좋은 선택이 아니므로, 폼을 필요로하지 않고 보통 클래스의 데이터를 호출해야 할 것입니다.JSP의 Java 클래스에서 데이터 표시

의 login.jsp

<form action="LoginServlet" method="post"> 
<table> 
<tr><td>Login : </td><td><input type="text" name="login"/></td></tr> 
<tr><td>Password :</td><td><input type="password" name="password"/></td></tr> 
<tr><td><input type="submit" value="Login"/></td><td></td></tr> 
</table> 
</form> 

LoginServlet.java

protected void doGet(HttpServletRequest request, HttpServletResponse response) 
              throws ServletException, IOException { 
     String login = request.getParameter("login"); 
     String password = request.getParameter("password"); 
     request.setAttribute("login", login); 
     request.setAttribute("password", password); 
     LoginService.setPublicID(login); 
     boolean result = LoginService.Auth(login, password); 
     System.out.println(result); 
     if(result==true){ 
      getServletContext().getRequestDispatcher("/main.jsp").forward(request, response); 
     } 
     else{ 
      response.sendRedirect("login.jsp"); 
     } 

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

} 

LoginService.java (정식. 핸들러) 나 정전기를 사용하는 공인 ID에 기초하여이 때문에, 다른 재료가 완료]

public class LoginService { 

    public static String publicID; 

    public static String getPublicID() { 
     return publicID; 
    } 
    public static void setPublicID(String login) { 
     LoginService.publicID = login; 
    } 

    public static boolean Auth(String login, String password){ 

     System.out.println(password); 
     if(password.equals("gw") && login.equals("servo")){ 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 

} 

그러면 main.jsp로 리디렉션됩니다.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Insert title here</title> 
</head> 
<body> 
<h2>Login successful!</h2> 
<a href="userinfo.jsp">UserInfo</a> 
Welcome <c:out value="${login}"/> 

</body> 
</html> 

UserInfoService.java

public class UserInfoService { 
    static String userName; 
    static String lastName; 
    static String mobile; 
    static String email; 


    public static String getUserName() { 
     return userName; 
    } 
    public static void setUserName(String userName) { 
     userName = LoginService.getPublicID(); 
     UserInfoService.userName = userName; 
    } 
    public static String getEmail() { 
     return email; 
    } 
    public static void setEmail(String email) { 
     UserInfoService.email = email; 
    } 

} 

그리고 마지막으로. UserInfo.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
    <%@ page import="org.UserInfo.UserInfoService"%> 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Insert title here</title> 
</head> 
<body> 
<c:out value="${UserInfoService.getUserName}"/> 
</body> 
</html> 

하지만 항상 비어 있습니다. 내가 틀린 곳을 말해 줄 수 있니?

답변

0

UserInfoServicenull로 확인, 당신은 빈 see here

+0

작동하지 않습니다. 어디에서 추가해야합니까? UserInfo.jsp에서? – Serv0

-1

당신은 어디서나 코드에서 UserInfoService.setUserName() 메소드를 호출하지 않는로 등록해야합니다.

관련 문제