1. 程式人生 > >Java Servlet【4】一個小的Servlet登入介面+頁面跳轉

Java Servlet【4】一個小的Servlet登入介面+頁面跳轉

       我下午跟著實驗室的出去吃吃飯,感覺好累啊。把傍晚的學習時間也耽誤了很多,可是開心就好。晚上回來寫個博。總結一下今天接近2小時的學習。

      看Servlet已經好幾天了也寫了3篇Servlet基礎知識的部落格,現在用它來寫一個小小的程式。

      登入介面->驗證介面->使用者管理主介面
      那麼首先就需要寫一個登入介面,登入介面的程式碼如下:

public class LoginServlet extends HttpServlet {

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

		response.setContentType("text/html;charset=utf-8"); //告訴瀏覽器要以這種編碼方式解析
		//response.setCharacterEncoding("utf-8");//按utf-8編碼,兩者配合使用比較好。
		PrintWriter out = response.getWriter();
		//返回一個介面(HTML技術)
		out.println("<h1>使用者登入</h1>");
		//action應該這樣寫:/web應用名/servlet的url
		out.println("<form action='/UserManager/LoginCLServlet'method='post'>");
		out.println("使用者名稱:<input type='text' name='username'/><br/>");
		out.println("密碼:<input type='password' name='password'/><br/>");
		out.println("<input type='submit' value='登入'/></br>");
		out.println("</form>");
		
	}

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

		this.doGet(request, response);
	}

}


    當你在框裡輸入使用者名稱和密碼的時候,

//action應該這樣寫:/web應用名/servlet的url
out.println("<form action='/UserManager/LoginCLServlet'method='post'>");
<form action>會將資料傳遞給
/UserManager/LoginCLServlet

LoginCLServlet是controller層的Servlet,    controller該檔案充當控制器的功能

    1)接收資料
    2)判斷應該跳轉到那個頁面,其程式碼是:

public class LoginCLServlet extends HttpServlet {


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

		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		//接收使用者提交的使用者名稱和密碼
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		
		//看一下是否接收到,這裡先簡單驗證一下
		//out.println("username="+username+" "+"password="+password);
		if("li".equals(username)&&"123".equals(password)){
			//跳轉到下一個頁面【Servlet提供了兩種方式SendRedirect 轉向 forward 轉發】
			//SendRedirect的URL應該這樣寫:/web應用名/servlet url
			response.sendRedirect("/UserManager/MainFrame");
		}else{
			//調回
			response.sendRedirect("/UserManager/reLoginServlet");
		}
		
	}


	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		this.doGet(request, response);
	}

}

在這裡可以進行頁面的跳轉,當密碼正確的時候調至MainFrame,當密碼錯誤的時候除錯reLoginServlet。

其中MainFrame只是簡單的網頁,後面繼續進行加工;reLoginServlet與LoginServlet的程式碼類似。

執行結果為:

登入失敗後: