Friday 18 March 2016

URL REWRITING

In URL rewriting, we append a token or identifier to the URL of the next Servlet or the next resource. We can send parameter name/value pairs using the following format:
url?name1=value1&name2=value2&??
A name and a value is separated using an equal = sign, a parameter name/value pair is separated from another parameter using the ampersand(&). When the user clicks the hyperlink, the parameter name/value pairs will be passed to the server. From a Servlet, we can use getParameter() method to obtain a parameter value.
URL Rewriting

Advantage of URL Rewriting

  1. It will always work whether cookie is disabled or not (browser independent).
  2. Extra form submission is not required on each pages.

Disadvantage of URL Rewriting

  1. It will work only with links.
  2. It can send Only textual information.


Example of using URL Rewriting

In this example, we are maintaning the state of the user using link. For this purpose, we are appending the name of the user in the query string and getting the value from the query string in another page.

index.html


  1. <form action="servlet1">  
  2. Name:<input type="text" name="userName"/><br/>  
  3. <input type="submit" value="go"/>  
  4. </form>  

FirstServlet.java


  1. import java.io.*;  
  2. import javax.servlet.*;  
  3. import javax.servlet.http.*;  
  4.   
  5.   
  6. public class FirstServlet extends HttpServlet {  
  7.   
  8. public void doGet(HttpServletRequest request, HttpServletResponse response){  
  9.         try{  
  10.   
  11.         response.setContentType("text/html");  
  12.         PrintWriter out = response.getWriter();  
  13.           
  14.         String n=request.getParameter("userName");  
  15.         out.print("Welcome "+n);  
  16.   
  17.         //appending the username in the query string  
  18.         out.print("<a href='servlet2?uname="+n+"'>visit</a>");  
  19.                   
  20.         out.close();  
  21.   
  22.                 }catch(Exception e){System.out.println(e);}  
  23.     }  
  24.   
  25. }  

SecondServlet.java


  1. import java.io.*;  
  2. import javax.servlet.*;  
  3. import javax.servlet.http.*;  
  4.   
  5. public class SecondServlet extends HttpServlet {  
  6.   
  7. public void doGet(HttpServletRequest request, HttpServletResponse response)  
  8.         try{  
  9.   
  10.         response.setContentType("text/html");  
  11.         PrintWriter out = response.getWriter();  
  12.           
  13.         //getting value from the query string  
  14.         String n=request.getParameter("uname");  
  15.         out.print("Hello "+n);  
  16.   
  17.         out.close();  
  18.   
  19.                 }catch(Exception e){System.out.println(e);}  
  20.     }  
  21.       
  22.   
  23. }  

web.xml


  1. <web-app>  
  2.   
  3. <servlet>  
  4. <servlet-name>s1</servlet-name>  
  5. <servlet-class>FirstServlet</servlet-class>  
  6. </servlet>  
  7.   
  8. <servlet-mapping>  
  9. <servlet-name>s1</servlet-name>  
  10. <url-pattern>/servlet1</url-pattern>  
  11. </servlet-mapping>  
  12.   
  13. <servlet>  
  14. <servlet-name>s2</servlet-name>  
  15. <servlet-class>SecondServlet</servlet-class>  
  16. </servlet>  
  17.   
  18. <servlet-mapping>  
  19. <servlet-name>s2</servlet-name>  
  20. <url-pattern>/servlet2</url-pattern>  
  21. </servlet-mapping>  
  22.   
  23. </web-app>  

HttpSession interface


In such case, container creates a session id for each user.The container uses this id to identify the particular user.An object of HttpSession can be used to perform two tasks:
  1. bind objects
  2. view and manipulate information about a session, such as the session identifier, creation time, and last accessed time.
HttpSession object

How to get the HttpSession object ?

The HttpServletRequest interface provides two methods to get the object of HttpSession:
  1. public HttpSession getSession():Returns the current session associated with this request, or if the request does not have a session, creates one.
  2. public HttpSession getSession(boolean create):Returns the current HttpSession associated with this request or, if there is no current session and create is true, returns a new session.

Commonly used methods of HttpSession interface

  1. public String getId():Returns a string containing the unique identifier value.
  2. public long getCreationTime():Returns the time when this session was created, measured in milliseconds since midnight January 1, 1970 GMT.
  3. public long getLastAccessedTime():Returns the last time the client sent a request associated with this session, as the number of milliseconds since midnight January 1, 1970 GMT.
  4. public void invalidate():Invalidates this session then unbinds any objects bound to it.


Example of using HttpSession

In this example, we are setting the attribute in the session scope in one servlet and getting that value from the session scope in another servlet. To set the attribute in the session scope, we have used the setAttribute() method of HttpSession interface and to get the attribute, we have used the getAttribute method.

index.html


  1. <form action="servlet1">  
  2. Name:<input type="text" name="userName"/><br/>  
  3. <input type="submit" value="go"/>  
  4. </form>  

FirstServlet.java


  1. import java.io.*;  
  2. import javax.servlet.*;  
  3. import javax.servlet.http.*;  
  4.   
  5.   
  6. public class FirstServlet extends HttpServlet {  
  7.   
  8. public void doGet(HttpServletRequest request, HttpServletResponse response){  
  9.         try{  
  10.   
  11.         response.setContentType("text/html");  
  12.         PrintWriter out = response.getWriter();  
  13.           
  14.         String n=request.getParameter("userName");  
  15.         out.print("Welcome "+n);  
  16.           
  17.         HttpSession session=request.getSession();  
  18.         session.setAttribute("uname",n);  
  19.   
  20.         out.print("<a href='servlet2'>visit</a>");  
  21.                   
  22.         out.close();  
  23.   
  24.                 }catch(Exception e){System.out.println(e);}  
  25.     }  
  26.   
  27. }  

SecondServlet.java


  1. import java.io.*;  
  2. import javax.servlet.*;  
  3. import javax.servlet.http.*;  
  4.   
  5. public class SecondServlet extends HttpServlet {  
  6.   
  7. public void doGet(HttpServletRequest request, HttpServletResponse response)  
  8.         try{  
  9.   
  10.         response.setContentType("text/html");  
  11.         PrintWriter out = response.getWriter();  
  12.           
  13.         HttpSession session=request.getSession(false);  
  14.         String n=(String)session.getAttribute("uname");  
  15.         out.print("Hello "+n);  
  16.   
  17.         out.close();  
  18.   
  19.                 }catch(Exception e){System.out.println(e);}  
  20.     }  
  21.       
  22.   
  23. }  

web.xml


  1. <web-app>  
  2.   
  3. <servlet>  
  4. <servlet-name>s1</servlet-name>  
  5. <servlet-class>FirstServlet</servlet-class>  
  6. </servlet>  
  7.   
  8. <servlet-mapping>  
  9. <servlet-name>s1</servlet-name>  
  10. <url-pattern>/servlet1</url-pattern>  
  11. </servlet-mapping>  
  12.   
  13. <servlet>  
  14. <servlet-name>s2</servlet-name>  
  15. <servlet-class>SecondServlet</servlet-class>  
  16. </servlet>  
  17.   
  18. <servlet-mapping>  
  19. <servlet-name>s2</servlet-name>  
  20. <url-pattern>/servlet2</url-pattern>  
  21. </servlet-mapping>  
  22.   
  23. </web-app>  

No comments:

Post a Comment