2015-02-02 3 views
0

블로그를 java servlet/jsp에 작성 중입니다. 그리고 지금 등록 문제가 있습니다. 나는이 링크servlet/jsp, doGet 및 doPost, 등록 양식

<a href="register.jsp">Reg</a><br/> 

를 사용하여 등록 페이지로 만약 내가

@WebServlet("/register") 
public class RegisterServlet extends HttpServlet { 
@Override 
public void doGet(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, java.io.IOException { 

} 

    @Override 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws 
      ServletException, IOException { 
     request.setCharacterEncoding("UTF-8"); 
     String login = request.getParameter("login"); 
     String pass = request.getParameter("pass"); 
     RegistrationHelper registrationHelper = new RegistrationHelper(); 
     registrationHelper.setLogin(login); 

     boolean isError = false; 
     if (login == null || login.trim().equals("")) { 
      String loginMessage = "It's empy"; 
      registrationHelper.setLoginMessage(loginMessage); 
      isError = true; 
     } 
     if (pass == null || pass.trim().equals("")) { 
      String passMessage = "It's empty."; 
      registrationHelper.setPassMessage(passMessage); 
      isError = true; 
     } 
     if(!isError) { 



      UsersDAO dao = (UsersDAO) request.getServletContext().getAttribute("usersDAO"); 
      if(dao.checkIfLoginExists(login)) { 
       registrationHelper.setLoginMessage("User with this name is already registered"); 
      } else { 
       dao.createUser(new User(login, Encryption.md5(pass))); 
       registrationHelper.setSuccess("Succesfully registered"); 
      } 
     } 
     request.setAttribute("registrationHelper", registrationHelper); 
     RequestDispatcher dis = request.getRequestDispatcher("/"); 
     dis.forward(request, response); 
    } 
} 

RegisterServlet

에있는 무엇

그리고 내는 register.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %> 
<html> 
<head> 
    <title></title> 
</head> 
<body> 

<form action="./register" method="POST"> 
    Podaj login: <input name="login" type="text" value="${registrationHelper.login}" size="20"/> ${registrationHelper.loginMessage} <br/> 
    Podaj hasło: <input name="pass" type="password" size="20"/>${registrationHelper.passMessage}<br/> 
    <input type="submit" value="Register"/> 
    <br>${registrationHelper.success} 
</form> 


</body> 
</html> 

따라서는, 그것은 모든 좋은 doPost가 사용되기 때문에 등록 양식을 가지고 있습니다.

그러나, 나는의 doGet가 사용되기 때문에 나는 아무것도

<a href="/register">Reg</a><br/> 

을 시도하고 난의 doGet 아무것도 변경 및 등록 양식을 작성합니다 무슨 차이가 표시되지 않는 경우.

제 질문은, 제가 어떻게해야 doGet에서 등록 양식을 작성해야합니까?

답변

2

doGet 방법에서 원하는 페이지로 전달하십시오. 이 그것을 할 것입니다 :

@Override 
public void doGet(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, java.io.IOException { 
    //make sure this is the path of the page you want/need to show 
    String path = "/register.jsp"; 
    RequestDispatcher dis = request.getRequestDispatcher(path); 
    dis.forward(request, response); 
} 
+0

감사합니다. 그것은 내 문제를 해결 :) –

+0

당신은 오신 것을 환영합니다. –

0

은 당신의 doGet-방법에 다음을 추가/레지스터가 열릴 때 (즉, 당신이 원하는 경우) 등록 페이지로 리디렉션해야

response.sendRedirect("/register.jsp"); 

.

+0

여기서 리디렉션을 사용하면 안됩니다. 대신, 내 대답에 묘사 된대로 앞으로 사용하십시오. –

-1

당신은 당신의 doGet 방법이를 작성할 수 있습니다

doPost(request,response); 

을이 경우에, 당신은 동일한 방법으로 취득 및 사후 양식을 처리합니다.

감사합니다.

+0

-1. 'doGet'과'doPost'는 똑같이 할 수 없습니다. 'doGet'은 결과를 얻는 정보 만 제공해야합니다. 결과 목록을 표시하십시오. 반면,'doPost'는 요청으로부터 정보를 처리하기위한 것입니다. 파일 업로드. 아마도 그들은 유사한 코드 행을 가지고 있지만 특정 상황에 처한 경우에도 동일한 규칙을 실행해야한다는 것을 의미하지는 않습니다. 일반적인 규칙은 아닙니다. –

+0

전혀 동의하지 않습니다. 양식의 처리는이 두 가지 방법으로 수행 할 수 있습니다. 또 다른 별도의 문제는 보안 또는 프로그래밍상의 이유로 적절한지 여부입니다. – musef

+0

* 할 수 있다는 * * 할 수 없다는 사실 *. 그게 내 downvote의 이유입니다, 왜냐하면 이것은 독자들을 오판하기 때문입니다. –

관련 문제