Presentation is loading. Please wait.

Presentation is loading. Please wait.

Li Tak Sing COMPS311F. Static attributes in Servlets Since Servlets are also Java classes, you can also use static attributes to store values that can.

Similar presentations


Presentation on theme: "Li Tak Sing COMPS311F. Static attributes in Servlets Since Servlets are also Java classes, you can also use static attributes to store values that can."— Presentation transcript:

1 Li Tak Sing COMPS311F

2 Static attributes in Servlets Since Servlets are also Java classes, you can also use static attributes to store values that can be shared by all servlets. For example, if you want a single database connect to be used by all servlets, you can use a static attribute to store the connection and it would be accessible by all servlets. On the other hand, a normal attribute in a servlet can only be used by the servlet only.

3 CountVisit This is to count the visitor to a site, not a page. You can try the servlet at: http://plbpc001.ouhk.edu.hk/tma/CountVisit http://plbpc001.ouhk.edu.hk/tma/CountVisit2 The source is at: http://plbpc001.ouhk.edu.hk/~mt311f/2010- oct/CountVisit.java http://plbpc001.ouhk.edu.hk/~mt311f/2010- oct/CountVisit2.java

4 CountVisit.java public class CountVisit extends HttpServlet { public static int count=0; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { PrintWriter out=response.getWriter(); out.println("You have visit this site for "+count+" times."); count++; } catch (Exception e) { e.printStackTrace(); }

5 CountVisit2 public class CountVisit2 extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { PrintWriter out=response.getWriter(); out.println("You have visit this site for "+CountVisit.count+" times."); CountVisit.count++; } catch (Exception e) { e.printStackTrace(); }

6 JSP Java Server Page JSP is an alternative way to handle HTTP requests. Contrary to Java Servlets, the basic structure of a JSP is an HTML file. Java code is embedded in the HTML code specified by

7 A simple JSP <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

8 A simple JSP Hello world Hello World Time is:

9 The output You can try the JSP page at: http://plbpc001.ouhk.edu.hk/tma/jsp/hello.jsp The source is at: http://plbpc001.ouhk.edu.hk/~mt311f/2010- sep/web/webapplicaiton/web/hello.jsp In order to view the code, you need to right click on the browser and select view soruce.

10 A simple JSP In the JSP page, Java code should be placed between. Every JSP page has several predefined variables: request. This variable specifies the data included in an http request. This variable takes value from the clients' browser to pass it over to the server. response. This variable specifies the data included in the http response. It is used with cookies and also in http headers. out. This variable specifies the output stream otherwise known as printwriter in a page context. session. This variable specifies the data associated with httpsession object with a specific session of a user. The main purpose of this object is to use the session information to maintain multiple page requests.

11 Methods of JSP variables. request Cookie[] getCookies(): get all the cookies for this request. String getParameter(String name): get the value of the named parameter. out This is a PrintWriter. Therefore, you can use println() etc to write to the final page. session Object getAttribute(String name). Get a named attribute void setAttribute(String name, Object obj). Set a named attribute void setMaxInactiveInterval(int i). Set the maximum inactive interval before the end of the session.

12 Methods of JSP variables. response void addCookie(Cookie c). Add a cookie.

13 In the last example, we use the following code write the current time: Time is: This can be shorten as: Time is: So is equilvalent to

14 The count example You can try the JSP at: http://plbpc001.ouhk.edu.hk/tma/jsp/count.jsp You can download the source at: http://plbpc001.ouhk.edu.hk/~mt311f/2010- sep/web/webapplicaiton/web/count.jsp http://plbpc001.ouhk.edu.hk/~mt311f/2010- sep/web/webapplicaiton/web/count.jsp

15 count.jsp <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> Count

16 count.jsp Count <% String count = null; Cookie cookie[] = request.getCookies(); if (cookie != null) { for (Cookie c : cookie) { if (c.getName().equals("count")) { count = c.getValue(); }

17 count.jsp if (count == null) { out.println("You are new here."); count = "1"; } else { out.println("You have visited this site for " + count + " times."); count = Integer.toString(Integer.parseInt(count) + 1); } response.addCookie(new Cookie("count", count)); %>

18 expire.jsp You can try the JSP page at http://plbpc001.ouhk.edu.hk/tma/jsp/expire.jsp You can download the source at: http://plbpc001.ouhk.edu.hk/~mt311f/2010- sep/web/webapplicaiton/web/expire.jsp http://plbpc001.ouhk.edu.hk/~mt311f/2010- sep/web/webapplicaiton/web/expire.jsp

19 expire.jsp <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <% if (request.getParameter("create") != null) { Cookie c = new Cookie("expire", "10"); c.setMaxAge(10); response.addCookie(c); }

20 expire.jsp Cookie cookie[] = request.getCookies(); int fontsize = 3; if (cookie != null) { for (Cookie c : cookie) { System.out.println("cookie:" + c.getName() + ":" + c.getValue() + " "); if (c.getName().equals("expire")) { fontsize = 10; } }%>

21 expire.jsp JSP Page '> The font size is.

22 expire.jsp Click this to revisit this page

23 SessionCount You can try this at http://plbpc001.ouhk.edu.hk/tma/jsp/sessioncount.jsp The source can be downloaded at: http://plbpc001.ouhk.edu.hk/~mt311f/2010- sep/web/webapplicaiton/web/sessioncount.jsp http://plbpc001.ouhk.edu.hk/~mt311f/2010- sep/web/webapplicaiton/web/sessioncount.jsp

24 sessioncount.jsp <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> Session Count

25 sessioncount.jsp Session Count <% Integer count = (Integer) session.getAttribute("count"); if (count == null) { out.println("You are new here."); count = 1; } else { out.println("You have visited this site for " + count + " times."); count++; } session.setAttribute("count", count);%>

26 sessionexpire You can try this at http://plbpc001.ouhk.edu.hk/tma/jsp/sessionexpire.jsp The source can be downloaded at: http://plbpc001.ouhk.edu.hk/~mt311f/2010- sep/web/webapplicaiton/web/sessionexpire.jsp http://plbpc001.ouhk.edu.hk/~mt311f/2010- sep/web/webapplicaiton/web/sessionexpire.jsp

27 sessionexpire.jsp <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <% if (request.getParameter("create") != null) { session = request.getSession(); session.setMaxInactiveInterval(10); } else { session = request.getSession(false); } %>

28 sessionexpire.jsp SessionExpire SessionExpire

29 sessionexpire.jsp <% int fontsize = 3; if (session != null) { fontsize = 10; }%> '> The font size is. Click this to revisit this page

30 sessionexpire.jsp

31 JSP directives Directives are used to pass high-level information to the server about how a specific page should be translated. The general format of a JSP directive looks like the following where one or more attribute values may be specified.

32 The page directive The page direction is used to specify properties of the JSP page. import: contentType: The session attribute is used to enable or disable the use of the predefined session variable. The default value is true.

33 The page directive The isThreadSafe attribute indicates that the page is thread-safe. The default is true. If this value is false, then requests for the JSP page will be handled serially. Note that if this value is true, then the programmer is responsible to sychronize access to shared variables. The include directive enables the contents of a separate resource to be merged into the current JSP page at the place of the directive appears.

34 JSP declarations This is to decare variables and methods for use in the same JSP. For example, the following declare a method that calculate the factorial of an integer:

35 JSP declarations Then, code in the same JSP page can now use this method.

36 A JSP that calculate the factorial You can try the page at http://plbpc001.ouhk.edu.hk/tma/jsp/factorial.jsp The source can be downloaded at: http://plbpc001.ouhk.edu.hk/~mt311f/2010- sep/web/webapplicaiton/web/factorial.jsp http://plbpc001.ouhk.edu.hk/~mt311f/2010- sep/web/webapplicaiton/web/factorial.jsp

37 factorial.jsp <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <%! private int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); } }%>

38 factorial.jsp Factorial Factorial

39 factorial.jsp <% String nva = request.getParameter("n"); int n = 0; if (nva != null) { n = factorial(Integer.parseInt(nva.trim())); %> The factorial of is. <% } %>

40 factorial.jsp

41 Database connection for a JSP If you want to have one database connection for all request to a page, the connection should be created as a JSP declaration. <%! private java.sql.Connection con = con(); private java.sql.Connection con() { java.sql.Connection re = null; try { Class.forName("com.mysql.jdbc.Driver"); re = java.sql.DriverManager.getConnection("jdbc:mysql://127.0.0.1/jdatabase", "user", "password"); } catch (Exception e) { e.printStackTrace(); } return null; } %>

42 Javabeans JSP declarations can be used to instantiate objects shared by requests for the same JSP page. But there are times that different JSP pages may want to share objects. JavaBeans are software components that support more flexible sharing. To facilitate sharing, JavaBeans must be coded according to certain specific coding convention.

43 JavaBeans A JavaBean must have a constructor with no parameters. To use a JavaBean, you will need to place a tag in a JSP page. There are two ways to use a JavaBean:

44 Invoking the methods of a JavaBean

45 JavaBean Lets create a JavaBean called javabean.CountVisit. Note that a JavaBean has to be in a package. package javabean; public class CountVisit { public int count=0; synchronized public void addCount() { count++; } synchronized public int count() { return count; }

46 A JSP page that uses javabean.CountVisit You can try the page at http://plbpc001.ouhk.edu.hk/tma/jsp/javabeanCount.jsp The source can be downloaded at: http://plbpc001.ouhk.edu.hk/~mt311f/2010- sep/web/webapplicaiton/web/javabeanCount.jsp http://plbpc001.ouhk.edu.hk/~mt311f/2010- sep/web/webapplicaiton/web/javabeanCount.jsp

47 javabeanCount.jsp <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> Using Javabean to count

48 javabeanCount.jsp Using Javabean to count This page has been visied times.

49 Scopes of JavaBeans Two distinct instantiations can co-exist independently with the same bean as long as they have different scopes. The legitimate scopes from high to low are application, session, page and request. When the scope is application, different end-users will share the same instantiation of the bean. Once created, the bean continues to live until the Web server restarts. When the scope is session, each end-user will have his or her own bean. A user does not share the bean with another user. A session bean will live until the session expires based on the value of MaxInactiveInterval or after session.invalidate( ) is called whichever happens first.

50 Scopes of JavaBeans When the scope is page, no two JSP pages can share the same instantiation of a bean. The difference between the page and request scopes is very subtle and does not concern us in this course.

51 Comparision of session, JSP declarations and JavaBean Values in a session are accessible by one user only and can be used in different JSP pages. Values stores in JSP declarations are accessible by all users but is limited to a single page. When a Javabean's scope is page or request, it is like JSP declaration. It is shared by all users but is limited to a single JSP page. When a Javabean's scope is session, it is like a session value and is shared by a single user and can be used in different JSP pages.

52 Comparision of session, JSP declarations and JavaBean When a Javabean's scope is application, it is shared by all users and can be used in different JSP pages. It is like static attributes in servlet.

53 javabeanCount2 This is exactly the same as javabeanCount. The two pages share the same JavaBean called count. So the two pages have the same counter. You can try the page at http://plbpc001.ouhk.edu.hk/tma/jsp/javabeanCount2.jsp


Download ppt "Li Tak Sing COMPS311F. Static attributes in Servlets Since Servlets are also Java classes, you can also use static attributes to store values that can."

Similar presentations


Ads by Google