สำหรับสรุปนี้รวมมาจากหนังสือ Head First Servlet and JSP เป็นหลัก
มาทำ link รวมไว้ให้เผื่อใครจะสอบ ตอนที่สอบเป็นรหัส 310-083 นะค่ะ รู้สึกว่าจะเป็น J2EE 1.5 ค่ะ
ขอให้โชคดีกันนะค่ะ
Listener | Description | method |
---|---|---|
javax.servlet. ServletContextListener | support event ที่เกี่ยวกับการ initialize และ destroy context หรือเมื่อเรา deploy application เราขึ้นไปบน web container หรือตอนที่ เรา undeploy หรือตอนที่ server start หรือ clash ก็จะมีการเรียก class นี้ไปใช้ | contextInitialized(ServletContextEvent) contextDestroyed(ServletContextEvent) |
javax.servlet. ServletContextAttributeListener | ทำงานเมื่อการมี add, remove, replace attribute เข้าไปที่ context | attributeAdded(ServletContextAttributeEvent) attributeRemoved(ServletContextAttributeEvent) attributeReplaced(ServletContextAttributeEvent) |
javax.servlet. ServletRequestListener | เมื่อมี request เกิดขึ้น หรือก่อนที่ request จะจบ | requestInitialized(ServletRequestEvent) requestDestroyed(ServletRequestEvent) |
javax.servlet. ServletRequestAttributeListener | เมื่อมีการเปลี่ยนแปลงของ attribute ใน request | attributeAdded(ServletRequestAttributeEvent) attributeRemoved(ServletRequestAttributeEvent) attributetReplaced(ServletRequestAttributeEvent) |
javax.servlet.http. HttpSessionListener | เกี่ยวกับ สร้าง/ทำลาย session | sessionCreated(HttpSessionEvent) sessionDestroyed(HttpSessionEvent) |
javax.servlet.http. HttpSessionAttributeListner | เกี่ยวกับ add, remove, replace ของ session attribute | attributeAdded(HttpSessionBindingEvent) attributeRemoved(HttpSessionBindingEvent) attributeReplaced(HttpSessionBindingEvent) |
javax.servlet.http. HttpSessionActivationListener | จะเกี่ยวพันถึงการ migrate session ข้าม jvm (สำหรับบางกรณี เช่นการทำ load-balancing) | sessionDidActivate(HttpSessionEvent) sessionWillPassivate(HttpSessionEvent) |
javax.servlet.http. HttpSessionBindingListener | คล้ายกับ HttpSessionAttributeListener แต่ต่างกันที่เป็น listener ที่จะ implement โดย attribute class คือมันจะ notify ที่ attribute ที่ implement มัน เมื่อ attribute นั้นๆ ถูกผูกเข้ากับ session หรือโยนออกจาก session | valueBound(HttpSessionBindingEvent) valueUnbound(HttpSessionBindingEvent) |
package com.amadmonster.scwcd.cookies; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class CookieAdd */ public class CookieAdd extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse * response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); // add any name to test cookie Cookie cookie = new Cookie("username", "amadmonster"); cookie.setMaxAge(30 * 60); response.addCookie(cookie); RequestDispatcher view = request .getRequestDispatcher("cookies/cookieresult.jsp"); view.forward(request, response); } }
<%@ 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>Insert title here</title> </head> <body> <a href="testcookie.do">click</a> </body> </html>
package com.amadmonster.scwcd.cookies; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class CookieTester */ public class CookieTester extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse * response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); Cookie[] cookies = request.getCookies(); if (cookies != null) { for (int i = 0; i < cookies.length; i++) { Cookie cookie = cookies[i]; if (cookie.getName().equals("username")) { String userName = cookie.getValue(); out.println("Hello " + userName); break; } } } }
Forward | Include |
---|---|
javax.servlet.forward.request_uri | javax.servlet.include.request_uri |
javax.servlet.forward.context_path | javax.servlet.include.context_path |
javax.servlet.forward.servlet_path | javax.servlet.include.servlet_path |
javax.servlet.forward.path_info | javax.servlet.include.path_info |
javax.servlet.forward.query_string | javax.servlet.include.query_string |
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <context-param> <param-name>param</param-name> <param-value>parameter value</param-value> </context-param> [ <context-param> ...parameter name-value pair as above... </context-param> ] <listener> <listener-class>package.class</listener-class> </listener> <session-config> <session-timeout>10</session-timeout> </session-config> <servlet> <servlet-name>Internal Name</servlet-name> <servlet-class>package.ServletClass</servlet-class> | <jsp-file>path/file.jsp</jsp-file> <load-on-startup>1<load-on-startup/> <init-param> <param-name>param</param-name> <param-value>parameter value</param-value> </init-param> [ <init-param> ...parameter name-value pair... <init-param> ]... <security-role-ref> <role-name>Manager</role-name> <role-link>Admin</role-line> </security-role-ref> </servlet> <servlet-mapping> <servlet-name>Internal Name</servlet-name> <url-pattern>/Public.do</url-pattern> </servlet-mapping> <jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <el-ignored>[ true | false ]</el-ignored> <scripting-invalid>[ true | false ]</scripting-invalid> </jsp-property-group> <taglib> <taglib-uri>randomThing</taglib-uri> <taglib-location>/WEB-INF/myFunctions.tld</taglib-location> </taglib> </jsp-config> <!-- filter config --> <filter> <filter-name>LogRequest</filter-name> <filter-class>package.Filter</filter-class> <init-param> <param-name>param</param-name> <param-value>parameter value</param-value> </init-param> [ <init-param> ...parameter name-value pair... <init-param> ]... </filter> <filter-mapping> <filter-name>LogRequest</filter-name> <url-pattern>/path/*</url-pattern> | <servlet-name>AnyRequest</servlet-name> <dispatcher> REQUEST | INCLUDE | FORWARD | ERROR </dispatcher> [ <dispatcher> REQUEST | INCLUDE | FORWARD | ERROR </dispatcher> ]... </filter-mapping> <!-- declare welcome file --> <welcome-file-list> <welcome-file>index.html</welcome-file> [ <welcome-file>index.html</welcome-file> ]... </welcome-file-list> <!-- declare to catch all error, but you can change to catch only some exceptions --> <error-page> <exception-type>java.lang.Throwable</exception-type> <location>/ErrorPage.jsp</location> </error-page> <!-- This is another way to catch error by status code --> <error-page> <error-code>404</error-code> <location>/ErrorNotFound.jsp</location> </error-page> <!-- external resource related --> <resource-env-ref> <resource-env-ref-name>jms/StockQueue</resource-env-ref-name>
<resource-env-ref-type>javax.jms.Queue</resource-env-ref-type> </resource-env-ref>
<resource-ref> <res-ref-name>ECC</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth> APPLICATION | CONTAINER </res-auth> <res-sharing-scope> Shareable | Unshareable </res-sharing-scope> </resource-ref> <!-- EJB related --> <ejb-local-ref> <ejb-ref-name>JNDI lookup name (such as ejb/Customer)</ejb-ref-name> <ejb-ref-type> Entity | Session </ejb-ref-type> <local-home>package.Class</local-home> <local>package.Class</local> </ejb-local-ref> <ejb-ref> <ejb-ref-name>JNDI lookup name (such as ejb/Customer)</ejb-ref-name> <ejb-ref-type> Entity | Session </ejb-ref-type> <home>package.Class</home> <remote>package.Class</remote> </ejb-ref> <env-entity> <env-entry-name>JNDI lookup name (such as rates/discountRate)</env-entry-name> <env-entry-type>java.lang.Integer</env-entry-type> <env-entry-value>10<env-entry-value> </env-entity> <!-- mine-type mapping --> <mime-mapping> <extension>mgp</extension> <mime-type>video/mpeg</mime-type> </mime-mapping> <!-- constraint resource --> <security-constraint> <web-resource-collection> <web-resource-name>some name</web-resource-name> <description>explain about tht resource</description> <url-pattern>/Public.do</url-pattern> [ <url-pattern>/Path/resource</url-pattern> ]... <http-method>GET | POST | PUT | TRACE | DELETE | HEAD | OPTION</http-method> [ <http-method>GET | POST | PUT | TRACE | DELETE | HEAD | OPTION</http-method> ]... </web-resource-collection> <auth-constraint> <role-name>Admin</role-name> [ <role-name>Others</role-name> ]... </auth-constraint> <user-data-constraint> <transport-guarantee> NONE | INTEGRAL | CONFIDENTIAL </transport-guarantee> </user-data-constraint> </security-constraint> <!-- authorization path to define role --> <security-role><role-name>Admin</role-name></security-role> [ <security-role><role-name>Admin</role-name></security-role> ]... <login-config> <auth-method>BASIC | DIGEST | CLIENT-CERT | FORM</auth-method> <form-login-config> <form-login-page>/loginPage.html</form-login-page> <form-error-page>/loginPage.html</form-error-page> </form-login-config> </login-config> </web-app>