2015-01-16 74 views
-2

是否有任何代碼可以添加到我的web應用程序中以實現cookie?這正是我可以在web.xml和jsp中完成的方式嗎?我想實現cookies登錄,但我不知道我該如何做到這一點。任何人都可以給我如何實現它的確切指示?如何在我的web應用程序中添加cookie的代碼

非常感謝您的幫助和支持。

/* 

*要更改此許可證標題,請在項目屬性中選擇許可證標題。 *要更改此模板文件,請選擇工具|模板 *並在編輯器中打開模板。 */

package my_servlets;

import java.io.IOException; 
import java.io.PrintWriter; 

import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.HttpSession; 

import connect_with_my_sql_database.LoginDao; 

import javax.servlet.http.Cookie;

public class Login extends HttpServlet{ 

    private static final long serialVersionUID = 1L; 

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


    } 

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

     response.setContentType("text/html");  
     PrintWriter out = response.getWriter(); 

     String n=request.getParameter("j_Username");  
     String p=request.getParameter("j_Password"); 

     HttpSession session = request.getSession(false); 
     if(session!=null) { 
      session.setAttribute("Username", n); 
      session.setAttribute("Password", p); 
     } 

     if(LoginDao.validate(n, p)){ 

      Cookie c1=new Cookie("j_Username",encrypt(n));//the username and passwrd are //encrypted 
      Cookie c2=new Cookie("j_Password",encrypt(p)); 
      c1.setMaxAge(20000); 
      c2.setMaxAge(20000); 
      response.addCookie(c1); 
      response.addCookie(c2); 

      RequestDispatcher rd=request.getRequestDispatcher("style/success.jsp"); 
      rd.forward(request,response);  
     }  
     else{ 
      //out.print("<p style=\"color:red\">Sorry "+n+" or "+p+" error</p>"); 
      RequestDispatcher rd=request.getRequestDispatcher("style/loginError.jsp");  
      rd.forward(request,response);  
     }  


     out.close();  
    }  
} 
+0

如果你想做一個登錄系統,你爲什麼用'javascript'標記這個?你在編寫Node.js應用程序嗎?如果是這樣,那麼你的HTTP API可能有處理cookie的方法。 – Quentin

+0

是的,對不起,你是對的。最好用cookies或類似的東西標記這個。我不是在寫一個node.js應用程序 –

回答

0

假設有一個login.jsp包含uname和password字段,當我們點擊提交時,控件進入LoginCheck servlet。 LoginCheck會檢查用戶名和密碼是否正確。如果是,它會創建兩個cookie併發送給瀏覽器。

的Login.jsp

<form action="LoginCheck" method="post"> 
<input type="text" name="uname"> 
<input type="pasword" name="password"> 
<input type="submit"> 
</form> 

LoginCheck--的Servlet

public void doPost(HttpServletRequest request,HttpServletResponse response) 
{ 
String uname=request.getParameter("uname"); 
String password=request.getParameter("password"); 
if(checkLogin(uname,password))//checkLogin going to check with database if the user is logged in 
{ 
Cookie c1=new Cookie("uname",encrypt(uname));//the username and passwrd are //encrypted 
Cookie c2=new Cookie("password',encrypt(password)); 
c1.setMaxAge(20000); 
c2.setMaxAge(20000); 
response.addCookie(c1); 
response.addCookie(c2);//sends cookies to the browser 
} 

希望這有助於。

+0

但是,如何在實踐中看到cookie正常工作?當我登錄我的應用程序時應該出現什麼?我是web應用程序的初學者,我的問題可能有點瑣碎或愚蠢 –

+0

通過LoginCheck中的上述代碼設置cookie後,您可能想要檢查cookie是否已設置。檢查你可能會使用Cookie arr [] = request.getCookies();那麼你可以迭代Cookie數組。 for(int i = 0; i

+0

我已經在上面添加了我的servlet代碼,是不是?我可以在哪裏添加迭代數組?在我的servlet或新的jsp中? –

相關問題