Lập trình web với jsp/servlet – Bài 2 : Xử lý Form

Tiếp tục với loạt bài hướng dẫn lập trình web với jsp/servlet,ở bài này chúng ta tìm hiểu về cách xử lý form với jsp/servlet như luồng hoặt động,cơ chế cũng như cách để gữi và lấy dữ liệu từ form.Đây là một trong những kiến thức cơ bản và rất quan trọng với lập trình web jsp/servlet mà các bạn cần nắm để xử lý ứng dụng java web của mình.

Ở bài thứ nhất các bạn đã học được cách tạo ra những chương trình đầu tiên với jsp/servlet và những kiến thức cơ bản cần nắm.

Ngoài lề một chút nhé các bạn,việc học của chúng ta như xây một ngôi nhà vậy,các bạn cần đi từ cơ bản đến nâng cao,muốn xây một ngôi nhà thì cần có móng nhà thật chắc.Tương tự như việc học lập trình,các bạn cần có nền tảng cơ bản thì việc học những kiến thức nâng cao cực kỳ dễ dàng.Cho nên tôi khuyên các bạn nên học từ những gì cơ bản nhất,áp dụng vào dự án web của mình thì cái đó là cái chúng ta nên học.

Xử lý form với jsp/servlet

Trở lại với nội dung chính bài 2,chúng ta sẽ xử lý form với jsp/servlet nhé.Tôi và các bạn cùng tạo một form đăng ký tài khoản,sau đó xử lý form để lấy thông tin của người dùng. Đầu tiên ,để làm được như trên,các bạn cần chuẩn bị một form tương ứng với một trang jsp với nội dung như sau :

File login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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=UTF-8">
		<title>Đăng ký thành viên</title>
	</head>
	<body>
		<div style="width: 500px; margin: 30px auto;">
			<h2>Đăng ký thành viên</h2>
			<form>
				<div>
					<label>Tên đăng nhập: </label>
					<input type="text" name="username" value="" />
				</div>
				<br />
				<div>
					<label>Mật khẩu: </label>
					<input type="password" name="password" value="" />
				</div>
				<br />
				<div>
					<input type="submit" name="submit" value="Đăng ký" />
					<input type="reset" name="reset" value="Nhập lại" />
				</div>
			</form>
		</div>
	</body>
</html>

 

Thông thường,khi chạy một file jsp thì nên tạo ra một file servlet rồi sau đó sẽ chuyển tiếp sang file jsp.Lý do vì sao ở bài 1 tôi đã viết cụ thể.Vậy thì bây giờ,tạo một file servlet để chuyển tiếp dùng forward và mapping đường dẫn ở file cấu hình với một dự án java web là file web.xml nhé các bạn :

Nội dung file servlet RegController.java:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 RequestDispatcher rd = request.getRequestDispatcher("/reg.jsp");
 rd.forward(request , response);
 }
 
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 
 }

Nội dung File web.xml :

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>xulyform</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
  <servlet>
  	<servlet-name>RegController</servlet-name>
  	<servlet-class>com.itphutran.controller.RegController</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>RegController</servlet-name>
  	<url-pattern>/reg</url-pattern>
  </servlet-mapping>
</web-app>

Với một file servlet khi tạo ra,vì thường chúng ta sử dụng hai phương thức chủ yếu của http là doGet() và doPost() nên eclipse mặc định tạo ra hai phương thức Post và Get.Một số framework phổ hiện nay như Spring hay Struts,thì phương thức Get dùng để hiển thị form,nghĩa là hiển thị view.(View theo mô hình MVC) .Phương thức Post dùng để xử lý form,tất là khi người dùng nhấn nút submit của form thì sẽ xử lý tại phương thức Post.

Như ví dụ của file servlet trên,phương thức doGet đang chuyển tiếp sang file reg.jsp để hiển thị view,phương thức

Post tôi chưa xử lý gì.Khi chạy ứng dụng lên thì sẽ chạy file servlet nhé các bạn :

Lập trình web với jspservlet – Bài 2 Xử lý Form :

Truyền dữ liệu thì từ jsp sang servlet

Để truyền dữ liệu được từ file jsp sang file servlet form bắt buột phải sử dụng thuộc tính action method.

  • Action : là trang nhận dữ liệu từ form.
  • Method : gồm post hoặc get.Nếu sử dụng phương thức post thì sang phương thức doPost của servlet sẽ xử lý,tương tự như get.

Vậy các bạn thêm vào form 2 thuộc tính  :

<form action="<%=request.getContextPath()%>/reg" method="post">

Lấy dữ liệu thì từ jsp truyền sang servlet

Tiếp tục,khi người dùng nhấn nút Đăng ký,thì lúc này cần phải lấy được thông tin của người dùng gồm username và password.Chúng ta sử dụng đối tượng request  và dùng phương thức getParameter(“paraname”) trả về kiểu dữ liệu String,phương thức này cho phép chúng ta lấy dữ liệu của một paraname ví dụ như form hay biến ở trên url…

Nội dung  khi xử lý ở phương thức doPost như sau :

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	String username = request.getParameter("username");
	String password = request.getParameter("password");
}

Gữi dữ liệu từ servlet sang jsp

Khi đã lấy thông tin được của người dùng ở file servlet,vấn đề bây giờ là làm thế nào để gữi username và password sang một file jsp để hiện thị thông tin đã đăng ký.Lúc này các bạn sẽ xử lý như sau :

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		request.setAttribute("username", username);
		request.setAttribute("password", password);
		
		RequestDispatcher rd = request.getRequestDispatcher("/info.jsp");
		rd.forward(request , response);
		
}

Dùng request.setAttribute(“keyname”, object)  :

  • keyname : đặt tên đối tượng (dựa vào keyname này để lấy dữ liệu)
  • object : đối tượng cần gữi đi sang file jsp.

 

Lưu ý : khi chuyển tiếp đến file jsp nào thì file đó mới nhận được dữ liệu.

 

Lấy dữ liệu từ servlet gữi sang jsp

Vậy bây giờ ,sang file info.jsp lấy thông tin của người dùng như sau :

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>Thông tin đăng ký</title>
</head>
<body>
	<h1>Thông tin người dùng đã đăng ký </h1>
	<p>Username : <%=request.getAttribute("username") %> </p>
	<p>Password : <%=request.getAttribute("password") %> </p>
</body>
</html>

Dùng request.getAttribute(“keyname”) phương thức này trả về kiểu dữ liệu là Object

Sau tất cả,bây giờ cùng chạy project ,sau đó nhập thông tin và nhấn nút đăng ký nhé.Và đây là kết quả :

Lập trình web với jspservlet – Bài 2 Xử lý Formv

Như các bạn thấy rằng,chúng ta đã lấy được thông tin của người dùng và hiển thị ngay tại trang info.jsp.

Tổng kết :

Trong một ứng dụng java web,lập trình web với jsp/servlet,xử lý form là kiến thức luôn luôn được sử dụng để lập trình.Vì vậy ở bài này,những gì quan trọng và cơ bản nhất tôi đã chia sẽ ở trên với các nội dung cần nắm :

  1. Gữi dữ liệu từ một file jsp sang servlet.
  2. Lấy thông tin từ jsp truyền sang servlet (tại trang servlet)
  3. Truyền dữ liệu từ file servlet sang jsp
  4. Lấy dữ liệu từ servlet gữi sang jsp (tại trang jsp)

Ở bài 3 tiếp theo chúng ta sẽ học cách để upload một file lên web server.

0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest
0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận
x