Presentation is loading. Please wait.

Presentation is loading. Please wait.

J2EE Servlets Ch. 10 (Architecture) Ch. 12 (21 Days)

Similar presentations


Presentation on theme: "J2EE Servlets Ch. 10 (Architecture) Ch. 12 (21 Days)"— Presentation transcript:

1

2 J2EE Servlets Ch. 10 (Architecture) Ch. 12 (21 Days)

3 History of Interactive Web  Applets Long download times Long download times Code on client machines (maintenance) Code on client machines (maintenance)  CGI Custom code to interact with web server Custom code to interact with web server Security hole Security hole Resource hog for large sites Resource hog for large sites  Java Servlets Standard, easy interface to web server Standard, easy interface to web server Security/authentication Security/authentication Implements sessions Implements sessions

4 History (cont.)  Early use of Servlets Simple, easy to use for web applications Simple, easy to use for web applications MVC all implemented in one big servlet MVC all implemented in one big servlet Very complexVery complex Difficult to maintainDifficult to maintain Not scalableNot scalable  Current state of Servlet use Smaller is better. Smaller is better. Used only for: Used only for: Gathering and validating data input from the userGathering and validating data input from the user Coordinating outputCoordinating output Minimal business logicMinimal business logic Web page forwardingWeb page forwarding

5 Servlet Features  Tailored to interact with Web Server  Server and platform independent  Efficient and scalable  Container provides additional functionality (i.e., authentication, cookies, etc.)

6 Interacting with HTML Forms  Get – Request information from web server Simple Simplehttp://www.byui.edu/j2ee?Name=Fred+&tel=3565132  Post – Send data to the server Submit button, etc. Submit button, etc. Data is sent in body of message Data is sent in body of message Safer than Get Safer than Get

7 HTML Forms (Cont.)  Put – Place a file on the server  Delete – Remove a web page from server

8 Servlet Class Diagram Class Diagram

9 Servlet Life Cycle Class Diagram State: Resident Processing Request START END init() doGet(), doPost, … destroy()

10 Servlet Sequence Diagram Fig. 12-15

11 Model 1 - Servlets only Model/View/Control Servlet WebServer Data base doGet/doPost webpage Generate HTML submit Data

12 Servlets in the Enterprise Model View/Control EJB Entity Bean WebServer Servlet Input Control Output doGet/doPost webpage submit Data Performance and Flexibility Issues

13 publc class HtmlPage extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { String name = request.getParameter(“name”); String telephone = request.getParameter(“tel”); response.setContentType(“text/html”); …. Business logic …. PrintWriter out = response.getWriter(): out.println(“ ”); out.println(“ First Servlet ”); out.println(“ ”); out.println(“ Hello “ + name + “, Telephone “ + telephone + “ ”); out.println(“ ”); out.println(“ ”); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { doGet(request, response); } } Example Servlet Get value of form parameters Sent output to web browser

14 Model 2 Architecture ModelView Data Access Objecs > WebServer Servlet JSP page input output doGet/doPost webpage Control Business Methods > Data submit >

15 JSPServlet Web Development Life Cycle Model 2 Architecture Get request Parameters Determine and call business function Determine next view Build view

16 Web Development Life Cycle protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); try { InitialContext context = new InitialContext(); BusinessRulesRemote businessRules = (BusinessRulesRemote) context.lookup(BusinessRules.REMOTE_JNDI_NAME); Long personId = businessRules.login(username,password); } catch (Exception e) { e.printStackTrace(); } HttpSession session = request.getSession(); session.setAttribute("personid", personId); RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp"); dispatcher.forward(request, response); } 1. Get request parameters 2.Call business function 3. Determine next view

17 Web Development Life Cycle JSP page Welcome to Home Town Bank! Logout 4.Build next view

18 How to use HTTPServlet HttpServletRequestHttpServlet doGet(request HttpServletRequest, response:HttpServletResponse) doPost(request HttpServletRequest, response:HttpServletResponse) doPut(request HttpServletRequest, response:HttpServletResponse) doDelete(request HttpServletRequest, response:HttpServletResponse) HttpServletResponse Contains Request Info (Input)Handles Response (Output)

19 RequestResponse Interface Forwarding a Response

20 RequestResponse Interface Including other Web Components

21 Deployment of Servlets  All Servlet files zipped together into a web archive (“war”) file  Requires specific directory structure  Deployment Descriptor (WSDL)

22 Deployment Descriptor A Simple Application Verify Data VerifyData maxValue 25 Verify Data /verifydata 30 404 /error404.html

23 Customizing Deployment  Define initialization parameters Context parameters Context parameters Apply to entire web applicationApply to entire web application Servlet parameters Servlet parameters Apply to a specific servletApply to a specific servlet

24 A Simple Application location BYU-Idaho Site Location Verify Data VerifyData maxValue 25 Verify Data /verifydata 30 404 /error404.html Deployment Descriptor Context Intialization Parameter Servlet Intialization Parameter

25 Retrieving Init. Parameters public void init() throws ServletException { super.init(); ServletContext context = this.getServletContext(); String location = context.getInitParameter(“location"); if (maxValue == null) { int maxValue = Integer.parseInt(this.getInitParameter(“maxValue"); } … }

26 Handling Errors  HTTP Error Codes Http Status code – set error code Http Status code – set error code Error page – set default error page Error page – set default error page  Send Redirect – redirect to another page  Servlet Exceptions – catch and handle all servlet exceptions

27 Set HTTP Status Code  Sets the error status code on default error page Import java.io.*; import javax.servlet.*; import javax.servlet.http.*; publc class HtmlPage extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { String name = request.getParameter(“name”); if (name.length() < 1) response.sendError(9001, “Invalid name”); } } HttpServletResponse public void sendError(int statusCode) public void sendError(int statusCode, String msg)) …. public void sendRedirect(String url);

28 Default HTTP Error Page A Simple Application Verify data VerifyData maxValue 25 verifyData /verifyData 30 9001 /error9001.html Define output error page for error code Deployment Descriptor

29 Send Redirect  Redirect to another page to handle error Import java.io.*; import javax.servlet.*; import javax.servlet.http.*; publc class HtmlPage extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { String name = request.getParameter(“name”); if (name.length() < 1) response.sendRedirect(“/Servlets/invalidNamePage”); } } HttpServletResponse public void sendError(int statusCode) public void sendError(int statusCode, String msg)) …. public void sendRedirect(String url);

30 Servlet Session Management  Hidden fields in form Visible to client in source (not secure) Visible to client in source (not secure) Limited amount of data Limited amount of data  URL rewritting http://www.byui.edu/j2ee?sessionid=9982345  Cookies Store on client browser Store on client browser May be disabled by some users May be disabled by some users  Server side session object Session info stored on Server Session info stored on Server Unlimited amount of spaceUnlimited amount of space More secureMore secure Automatic management Automatic management

31 Creating Cookies  Implement transactions with Cookies Store state data in Cookie Store state data in Cookie Cookie public void setValue(String value) public String getName() public String getValue() …. HttpServletResponse … public void addCookie(Cookie c) public Cookie[ ] getCookies() ….

32 Creating a Cookie Import java.io.*; import javax.servlet.*; import javax.servlet.http.*; publc class HtmlPage extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { try { Cookie cookie = new Cookie(“userAddress”, null); String url = this.getRequextURI(); cookie.addValue(url); response.addCookie(cookie); double quantity = Double.parseDouble(request.getParameter(“quantity”)); double totalQuantity += (Double) session.getAttribute(“totalQuantity”); } catch (RemoteException remex) { response.sendError(response.SC_INTERNAL_SERVER_ERROR); } } }

33 Retrieving a Cookie publc class HtmlPage extends HttpServlet { String userUrl = new UniqueID(); public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { try { Cookie cookie = null; Cookie[] cookies = response.getCookies(); if (cookies != null) { for (int i=0; i < cookies.length; i++) { cookie = cookies[i]; if (cookie.getName().equals(“userAddress”)) { String urlAddress = cookie.getValue(); break; } } } } catch (RemoteException remex) { response.sendError(response.SC_INTERNAL_SERVER_ERROR); } }

34 Sessions  Implement transactions with a HttpSession Retains state of data between page request Retains state of data between page request HttpSession public long getId() public long getLastAccessedTime() public long getCreationTime() public long getMaxInactiveInterval() public Object getAttribute() public boolean isNew() …. HttpServletRequest … public HttpSession getSession() ….

35 Getting a Session Import java.io.*; import javax.servlet.*; import javax.servlet.http.*; publc class HtmlPage extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { try { HttpSession session = request.getSession(); if (session.isNew()) { Long personId = (Long) session.getAttribute(“personId”); } double quantity = Double.parseDouble(request.getParameter(“quantity”)); session.setAttribute(“quantity”); } catch (RemoteException remex) { response.sendError(response.SC_INTERNAL_SERVER_ERROR); } } }

36 Filter Servlets  Acts as preprocessor to request/response for target servlet Authenticate Filter Servlet HttpPage Servlet VerifyData Servlet PageHits Filter Servlet …HttpPage …VerifyData

37 Filter Servlet Import java.io.*; import javax.servlet.*; import javax.servlet.http.*; publc class PageHits extends HttpServlet implements Filter { private FilterConfig filterConfig = null; public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig; } public void destroy( { this.filterConfig = null; } Must override init. method Must override destroy method Must implement Filter Interface

38 Filter Servlet (cont.) public void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { if (filterConfig == null) return; synchronized (this) { Integer counter =(Integer) filterConfig.getServletContext().getAttribute("Counter"); if (counter == null) counter = new Integer(0); counter = new Integer(counter.intValue()+1); filterConfig.getServletContext().log("Number of hits is " + counter); filterConfig.getServletContext().setAttribute("Counter", counter); } chain.doFilter(req, resp) } Must override doFilter method

39 Modify Deployment Descriptor A Simple Application VerifyData VerifyData maxValue 25 Verify Data /verifyData/ Page Hits Page Hits Count page hits PageHits PageHits VerifyData

40 Listener Servlet  Servlet is automatically executed when some external event occurs HTTPSessionActivationListener Session is activated/passivated HTTPSessionAttributeListener Session attribute is added/removed HTTPSessionListener Session attribute is created/destroyed HTTPSessionContextAttributeListener Servlet contextattribute is added/removed HTTPSessionContextListener Servlet context changes

41 Create Listener Servlet Import java.io.*; import javax.servlet.*; import javax.servlet.http.*; publc class Listener extends HttpServlet implements ServletContextListener { private ServletContext context = null; public void contextIntialized(ServletContextEvent event) { context = event.getServerContext(); Integer counter = new Integer(0); context.setAttribute(“Counter”, counter); context.log(“Created Counter”); } public void contextDestroyed(ServletContextEvent event) { event.getServletContext().removeAttribute(“Counter”); } } Must override contextInitialized method Must implement Listner Interface

42 Modify Deployment Descriptor A Simple Application Verify data VerifyData maxValue 25 Verify Data /verifyData/ Page Hits Page Hits Count page hitsdescription> PageHits PageHits Verify data Listener

43 Modify Filter Servlet public void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { if (filterConfig == null) return; synchronized (this) { Integer counter =( Integer) filterConfig.getServletContext().getAttribute(“Counter”); if (counter = null) counter = new Integer(1); counter = new Integer(counter.intValue()+1); filterConfig.getServletContext().log(“Number of hits is “ + counter); filterConfig.getServletContext().setAttribute(“Counter”, counter); counter); } chain.doFilter(request, response); } } No longer needed

44 Modified Filter Servlet public void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { if (filterConfig == null) return; synchronized (this) { Integer counter =( Integer) filterConfig.getServletContext().getAttribute(“Counter”); counter = new Integer(counter.intValue()+1); filterConfig.getServletContext().log(“Number of hits is “ + counter); filterConfig.getServletContext().setAttribute(“Counter”, counter); counter); } chain.doFilter(request, response); } }


Download ppt "J2EE Servlets Ch. 10 (Architecture) Ch. 12 (21 Days)"

Similar presentations


Ads by Google