Day 04 GenericServlet

来源:互联网 发布:一元云购计算规则 编辑:程序博客网 时间:2024/05/04 14:57

GenericServlet

Servlet接口和ServletConfig接口的实现类,是一个抽象类,其中的service方法为抽象方法

如果新建的Servlet直接继承GenericServlet会使开发更简洁

具体实现:

在GenericServlet中声明了一个ServletConfig类型的成员变量,在init(ServletConfig)方法中对其进行了初始化

利用servletConfig成员变量的方法实现了ServletConfig接口的方法

定义了一个init()方法,在init(ServletConfig)方法中对其进行调用,子类可以直接覆盖init()在其中实现对Servlet的初始化

不建议覆盖init(ServletConfig),因为如果忘记编写super.init(ServletConfig),则会出现空指针异常

例:

[html] view plain copy
  1. <form action="Login" method="post">  
  2.     user:<input type="text" name="username" />  
  3.     pass:<input type="text" name="password" />  
  4.     <input type="submit" value="Login" />  
  5. </form>   


[html] view plain copy
  1. <context-param>  
  2.     <param-name>user</param-name>  
  3.     <param-value>root</param-value>  
  4. </context-param>  
  5.   
  6. <context-param>  
  7.     <param-name>pass</param-name>  
  8.     <param-value>123456</param-value>  
  9. </context-param>  
  10.   
  11. <servlet>  
  12.     <servlet-name>loginServlet</servlet-name>  
  13.     <servlet-class>com.javaweb.gaoting.LoginServlet</servlet-class>  
  14. </servlet>  
  15. <servlet-mapping>  
  16.     <servlet-name>loginServlet</servlet-name>  
  17.     <url-pattern>/Login</url-pattern>  
  18. </servlet-mapping>  


[java] view plain copy
  1. private ServletConfig servletConfig;  
  2.   
  3. public void init(ServletConfig servletConfig) throws ServletException {  
  4.     this.servletConfig = servletConfig;  
  5. }  
  6.   
  7. public void service(ServletRequest request, ServletResponse response)  
  8.         throws ServletException, IOException {  
  9.     //1  
  10.     String username = request.getParameter("username");  
  11.     String password = request.getParameter("password");  
  12.     //2  
  13.     ServletContext servletContext = servletConfig.getServletContext();  
  14.     String initUser = servletContext.getInitParameter("user");  
  15.     String initPassword = servletContext.getInitParameter("pass");  
  16.     //3  
  17.     PrintWriter out = response.getWriter();  
  18.     if(initUser.equals(username) && initPassword.equals(password)){  
  19.         out.print("Success:"+username);  
  20.     }else{  
  21.         out.print("Error:"+username);  
  22.     }  
  23. }  

当继承了GenericServlet 代码简化:


[java] view plain copy
  1. public class LoginServlet extends GenericServlet {  
  2.   
  3.     public void service(ServletRequest request, ServletResponse response)  
  4.             throws ServletException, IOException {  
  5.         //1  
  6.         String username = request.getParameter("username");  
  7.         String password = request.getParameter("password");  
  8.         //2  
  9.         String initUser = getServletContext().getInitParameter("user");  
  10.         String initPassword = getServletContext().getInitParameter("pass");  
  11.         //3  
  12.         PrintWriter out = response.getWriter();  
  13.         if(initUser.equals(username) && initPassword.equals(password)){  
  14.             out.print("Success:"+username);  
  15.         }else{  
  16.             out.print("Error:"+username);  
  17.         }  
  18.     }  
  19.   
  20. }  


0 0
原创粉丝点击