Java/Servlets/Context

Материал из Java эксперт
Перейти к: навигация, поиск

Context accessor

   <source lang="java">

import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ContextAccessor extends HttpServlet {

 public void doGet(HttpServletRequest request, HttpServletResponse response)
     throws ServletException, java.io.IOException {
   //get a servlet context attribute
   ContextObject contextObj = (ContextObject) getServletContext()
       .getAttribute("com.jexp.ContextObject");
   if (contextObj != null)
     contextObj.put(request.getRemoteAddr(), "" + new java.util.Date());
   //display
   response.setContentType("text/html");
   java.io.PrintWriter out = response.getWriter();
   out
       .println("<html><head><title>Servlet Context Attribute</title></head><body>");
   if (contextObj != null) {
out.println("

Servlet Context Attribute Values

");
     out.println(contextObj.getValues());
   } else {
out.println("

Servlet Context Attribute is Null

");
   }
   out.println("</body></html>");
 } //end doGet

} //ContextObject.java class ContextObject {

 private Map map;
 public ContextObject() {
   map = Collections.synchronizedMap(new HashMap());
 }
 public void put(Object key, Object value) {
   if (key == null || value == null)
     throw new IllegalArgumentException(
         "Invalid parameters passed to ContextObject.put");
   map.put(key, value);
 }
 public Map getMap() {
   return map;
 }
 public String getValues() {
   StringBuffer buf = new StringBuffer("");
   Set set = map.keySet();
   synchronized (map) {
     Iterator i = set.iterator();
     while (i.hasNext())
       buf.append((String) i.next() + "
"); } return buf.toString(); } public String toString() { return getClass().getName() + "[ " + map + " ]"; }

}

      </source>
   
  
 
  



Context Attributes Servlet

   <source lang="java">

import java.io.PrintWriter; import java.io.IOException; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class SessionTracker2 extends HttpServlet {

 public void doGet(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException 
 {
   res.setContentType("text/html");
   PrintWriter out = res.getWriter();
   HttpSession session = req.getSession(true);
   Integer totalCount = (Integer) getServletContext().getAttribute("total");
   if (totalCount == null)
   {
     totalCount = new Integer(1);
   }
   else
   {
     totalCount = new Integer(totalCount.intValue() + 1);
   }
   Integer count = (Integer) session.getAttribute("count");
   if (count == null) {
     count = new Integer(1);
   } else {
     count = new Integer(count.intValue() + 1);
   }
   session.setAttribute("count", count);
   getServletContext().setAttribute("total", totalCount);
   out.println("<html><head><title>SessionSnoop</title></head>");
out.println("<body>

Session Details

");
   out.println("You"ve visited this page " + count + ((count.intValue() == 1) ? " time." : " times.") + "
"); out.println("Total number of visits: " + totalCount + "
");
out.println("

Details of this session:

");
   out.println("Session id: " + session.getId() + "
"); out.println("New session: " + session.isNew() + "
"); out.println("Timeout: " + session.getMaxInactiveInterval() + "
"); out.println("Creation time: " + new Date(session.getCreationTime()) + "
"); out.println("Last access time: " + new Date(session.getLastAccessedTime()) + "
"); out.println("</body></html>"); }

}

      </source>
   
  
 
  



Context binder

   <source lang="java">

import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ContextBinder extends HttpServlet {

 public void doGet(HttpServletRequest request, HttpServletResponse response)
     throws ServletException, java.io.IOException {
   //bind an object to the servlet context
   getServletContext().setAttribute("com.jexp.ContextObject",
       new ContextObject());
   //better display something
   response.setContentType("text/html");
   java.io.PrintWriter out = response.getWriter();
   out
       .println("<html><head><title>Servlet Context Attribute</title></head><body>");
out.println("

Servlet Context Attribute Bound

");
   out.println("Object: "
       + getServletContext().getAttribute("com.jexp.ContextObject"));
   out.println("</body></html>");
 } //end doGet

} //ContextObject.java class ContextObject {

 private Map map;
 public ContextObject() {
   map = Collections.synchronizedMap(new HashMap());
 }
 public void put(Object key, Object value) {
   if (key == null || value == null)
     throw new IllegalArgumentException(
         "Invalid parameters passed to ContextObject.put");
   map.put(key, value);
 }
 public Map getMap() {
   return map;
 }
 public String getValues() {
   StringBuffer buf = new StringBuffer("");
   Set set = map.keySet();
   synchronized (map) {
     Iterator i = set.iterator();
     while (i.hasNext())
       buf.append((String) i.next() + "
"); } return buf.toString(); } public String toString() { return getClass().getName() + "[ " + map + " ]"; }

}

      </source>
   
  
 
  



Context Parameters Servlet

Get settings from ServletContext

   <source lang="java">

import java.io.IOException; import java.io.PrintWriter; import java.util.Enumeration; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class WebAppProperties extends HttpServlet {

 public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
     IOException {
   resp.setContentType("text/html");
   PrintWriter out = resp.getWriter();
   ServletContext context = getServletContext();
   String displayName = context.getServletContextName();
   if (displayName == null) {
     displayName = "(no display-name element defined)";
   }
   out.println("<html>");
   out.println("<body>");
   out.println("
Name: " + displayName); out.println("
Context: " + req.getContextPath());
out.println("

"); out.println("Initialization Parameters

");
   out.println("
");
out.println("
");
   Enumeration e = context.getInitParameterNames();
   while (e.hasMoreElements()) {
     String name = (String) e.nextElement();
out.println(""); out.println(""); out.println(""); out.println(""); } out.println("
" + name + "" + context.getInitParameter(name) + "
");
   out.println("</body>");
   out.println("</html>");
   out.flush();
 }

}

</source>
   
  
 
  



Servlets Context Sample

Set the context parameters in web.xml

   <source lang="java">

// web.xml /* <?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.ru/xml/ns/j2ee"

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://java.sun.ru/xml/ns/j2ee
        http://java.sun.ru/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
 <context-param>
   <param-name>name</param-name>
   <param-value>Joe</param-value>
 </context-param>
 <context-param>
   <param-name>password</param-name>
   <param-value>password</param-value>
 </context-param>
 <servlet>
   <servlet-name>ParameterServlet</servlet-name>
   <servlet-class>ParameterServlet</servlet-class>
   <init-param>
     <param-name>name</param-name>
     <param-value>Joe</param-value>
   </init-param>
   <init-param>
     <param-name>password</param-name>
     <param-value>password</param-value>
   </init-param>
 </servlet>

</web-app>

  • /

import java.io.IOException; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ParameterServlet extends HttpServlet {

 private String dbName = "";
 private String dbPassword = "";
 public void init(ServletConfig config) throws ServletException {
   super.init(config);
   ServletContext context = getServletContext();
   dbName = context.getInitParameter("name");
   dbPassword = context.getInitParameter("password");
 }
 public void doGet(HttpServletRequest req, HttpServletResponse res)
     throws IOException {
   ServletOutputStream out = res.getOutputStream();
   res.setContentType("text/html");
   out.println("<html><head><title>Basic Servlet</title></head>");
   out.println("<body>Database username is  " + dbName);
   out.println("
Database password is " + dbPassword + ""); out.println("</body></html>"); }

}

      </source>
   
  
 
  



Using Contexts Servlet

   <source lang="java">

import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class UsingContexts extends HttpServlet {

   public void doGet(HttpServletRequest request, HttpServletResponse response) 
       throws ServletException, IOException 
   {
       response.setContentType("text/html");
       PrintWriter out = response.getWriter();
       HttpSession session = request.getSession(true);
       Integer counter2 = (Integer) getServletContext().getAttribute ("counter2");
       if (counter2 == null) {
           counter2 = new Integer(1);
       } else {
           counter2 = new Integer(counter2.intValue() + 1);
       }
       getServletContext().setAttribute("counter2", counter2);
       Integer counter = (Integer) session.getAttribute("counter");
       if (counter == null) {
           counter = new Integer(1);
       } else {
           counter = new Integer(counter.intValue() + 1);
       } 
       session.setAttribute("counter", counter);
       out.println("<HTML>");
       out.println("<HEAD>");
       out.println("<TITLE>");
       out.println("Using Contexts");
       out.println("</TITLE>");
       out.println("</HEAD>");
       out.println("<BODY>");
out.println("

Using Contexts

");
       out.println("Welcome! You have been here " + counter + " times.
"); out.println("Total page accesses: " + counter2 + "
"); if(session.isNew()){ out.println("This is a new session.
"); } else { out.println("This is not a new session.
"); } out.println("The session ID: " + session.getId() + "
"); out.println("Last time accessed: " + new Date(session.getLastAccessedTime()) + "
"); out.println("Creation time: " + new Date(session.getCreationTime()) + "
"); out.println("Timeout length: " + session.getMaxInactiveInterval() + " seconds
"); out.println("</BODY>"); out.println("</HTML>"); }

}

      </source>