Servlet เราจะมี 2 ยุคด้วยกัน คือ
Servlet 2.5 ซึ่งใช้กับ JAVAEE 5
และ Servlet 3.0 ซึ่งใช้กับ JAVAEE 6 ขึ้นไปครับ
จะเจาะเฉพาะ Servlet 3.0 นะครับ อันเก่ามันเก่าไปและ 555
มาท้าวความกันครับ
Servlet ดั้งเดิม
package com.test;
import java.servlet.http.HttpServlet;
import java.servlet.http.HttpServletRequest;
import java.servlet.http.HttpServletResponse;
public class MyServlet exends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response){
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
out.println("Hello World Get");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response){
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
out.println("Hello World Post");
}
}
อ่าฮะ Java Class สืบทอดมาจาก HttpServlet แค่นี้ตัวนี้ก็เป็น Servlet เรียบร้อยแล้ว และทำการ override method doGet เพื่อจะรับผ่าน GET request ครับ ซึ่งคือการเรียกผ่านทาง url เช่นเดียวกับที่ google ใช้ในการ search ครับ ซึ่งหากเรียกมาก็จะแสดงค่า Hello World Get ครับ
อีก override method doPost ก็คือการรับค่าผ่าน POST request ครับ นั่นก็คือส่งผ่าน body ของ package ซึ่งจะมองไม่เห็นใน url จะทำให้ส่งค่าได้มากขึ้นและปลอดภัยเนื่องจากไม่แสดงทาง browser ด้วยครับ
โครงสร้าง Project
MyProject
- src
- com.test.MyServlet
- WebContent
- WEB-INF
- web.xml
ซึ่ง web.xml เป็น config เพื่อใช้ในการปรับแต่งลักษณะต่างๆ ของ Web Application ของเราครับ วันนี้เสนอการ mapping Servlet ด้วย
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.test.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/MyServlet</url-pattern>
</servlet-mapping>
ในแบบดั้งเดิมเราจะทำการ mapping servlet ใน web.xml ซึ่งมี 2 tag หลักๆ คือ
<servlet> ซึ่งเป็นตัวบอกว่าจะใช้ชื่ออะไรในการอ้างถึง Servlet class ของเรา และ
<servlet-mapping> เป็นตัว mapping ระหว่าง Servlet name กับ url ซึ่งเป็นตัวบอกว่า Servlet ของเราจะต้องเข้าถึงด้วย url อะไรครับ ใครอยากได้ .html ก็สามารถใส่เป็น /MyServlet.html ได้นะครับ
------------------------------------------------
Servlet 3.0
ในเวอร์ชั่นนี้ web.xml เป็นแค่ส่วนเสริมครับ ซึ่งจำทำแบบเดิมก็ได้หรือใช้ annotation @WebServlet ก็ได้ครับ
package com.test;
import java.servlet.http.HttpServlet;
import java.servlet.http.HttpServletRequest;
import java.servlet.http.HttpServletResponse;
@WebServlet("MyServlet")
public class MyServlet exends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response){
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
out.println("Hello World Get");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response){
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
out.println("Hello World Post");
}
}
ไม่มีความคิดเห็น:
แสดงความคิดเห็น