Servlet(8)—GenericServlet和改进Servlet实例
来源:互联网 发布:mymusic软件 编辑:程序博客网 时间:2024/05/16 19:21
- 概念genericservlet是个抽象的父类,必须给出子类才能实例化它。它给出了设计servlet的一些骨架,定义了servlet生命周期,还有一些得到名字、配置、初始化参数的方法,其设计的是和应用层协议无关的,也就是说你有可能用非http协议实现它(其实目前Java Servlet还是只有Http一种)。
- 该类实现了Servlet, ServletConfig,接口,所以解决了使用Servlet类时必须要实现Servlet的所有方法这个问题,使用Servlet时可以继承genericServlet即可,此时只需要实现一个抽象方法service()就行,其他方法,需要时在重写或者调用
注意:
GenericServlet自己写也行,jdk提供的也有,解决了多余方法的问题。
package com.test.web;import java.io.IOException;import java.util.Enumeration;import javax.servlet.Servlet;import javax.servlet.ServletConfig;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;/*** * 自定义Sevlet实现类,使用时可以不需要写出全部的方法,只需要实现一个抽象方法,其他的方法用到时再写。 * 该类实现了两个接口,Servlet、ServletConfig */public abstract class MyGenericServlet implements Servlet ,ServletConfig{ private ServletConfig servletConfig; /** * 以下方法继承自Servlet */ @Override public void destroy() { } @Override public ServletConfig getServletConfig() { return servletConfig; } @Override public String getServletInfo() { return null; } @Override public void init(ServletConfig arg0) throws ServletException { this.servletConfig = arg0; init(); } public void init() throws ServletException { } /*** * 该方法必须要实现,所以使用abstract关键字修饰成抽象方法,所以该类也就是抽象类 */ @Override public abstract void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException; /** * 以下方法继承自ServletConfig */ //获取请求中的指定参数的参数值 @Override public String getInitParameter(String arg0) { return servletConfig.getInitParameter(arg0); } //获取Enumeration对象 @Override public Enumeration<String> getInitParameterNames() { return servletConfig.getInitParameterNames(); } //获取ServletContext对象 @Override public ServletContext getServletContext() { return servletConfig.getServletContext(); } //获取Servlet的名称 @Override public String getServletName() { return servletConfig.getServletName(); }}
一个Servlet
/** * 该类改进了因为实现Servlet接口而产生的多余方法 *但是获取请求方式的方法需要修改 */public class LoginServlet2 extends MyGenericServlet { /** * 该方法覆盖了父类中的init(ServletConfig config)方法,导致父类中的init方法没有运行, * 出现空值针异常。该方法想要执行就需要:在父类中写一个空参的init方法覆盖掉,在父类中也可以调用被覆盖的方法, * 只是具体执行时会执行子类重写的方法,或者直接覆盖掉父类中带参的init方法,但是在方法中写上super.init(config) * 这句话,显式调用一下即可。 */ /*@Override public void init(ServletConfig config) throws ServletException { System.out.println("初始化..."); }*/ @Override public void init() throws ServletException { System.out.println("初始化..."); } @Override public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { //获取请求的方式 HttpServletRequest httpServletRequest = (HttpServletRequest) request; String method = httpServletRequest.getMethod(); System.out.println("请求方式:" + method); //1.获取请求参数username,password(获取的是表单信息) String username = request.getParameter("username"); String password = request.getParameter("password"); //2.获取当前web应用的初始化参数user,password。 String initUser = getServletContext().getInitParameter("user"); String initPassword = getServletContext().getInitParameter("password"); PrintWriter out = response.getWriter(); //3.比对 if(initUser.equals(username) && initPassword.equals(password)){ //4.打印响应字符串 out.println("Hello: " + username); }else{ out.println("Sorry: " + username); } }}
一个页面
<body> <form action="loginServlet" method="get"> user:<input type="text" name="user"/> <br> password:<input type="password" name="password"/> <br> interesting: <input type="checkbox" name="interesting" value="read"/>read <input type="checkbox" name="interesting" value="walk"/>walk <input type="checkbox" name="interesting" value="swing"/>swing <input type="checkbox" name="interesting" value="shopping"/>shopping <input type="checkbox" name="interesting" value="tv"/>TV <br> <input type="submit" value="Submit"/> </form></body>
阅读全文
0 0
- Servlet(8)—GenericServlet和改进Servlet实例
- Servlet(9)—HttpServlet和改进Servlet实例
- Servlet——通过GenericServlet和HttpServlet开发Servlet
- Servlet-----GenericServlet
- Servlet与GenericServlet和HttpServlet的关系
- Servlet,GenericServlet和HttpServlet的继承关系
- ---servlet(四)Servlet和GenericServlet和HttpServlet
- javax.servlet.GenericServlet翻译
- servlet 、GenericServlet 、HttpServlet 详解
- Servlet(二)GenericServlet
- [Servlet]深入研究GenericServlet
- servlet genericservlet httpservlet
- servlet 、GenericServlet 、HttpServlet 详解
- javax.servlet.GenericServlet.getServletContext(GenericServlet.java:125)
- 传智播客Servlet学习,ServletConfig接口和GenericServlet类
- servlet/genericservlet/httpservlet和doGet,dopost()之间的区别
- GenericServlet 、Servlet和httpServler他们之间的关系
- Servlet---详情解析(二)---继承GenericServlet和HttpServlet/适配器
- Python3学习(31)--文件和目录的操作
- Java集合类: Set、List、Map、Queue区别及应用
- javascript继承方法(二)
- 对web标准的理解
- C# combox下拉模糊查询
- Servlet(8)—GenericServlet和改进Servlet实例
- 反转链表
- Unity3d中的Awake()、OnEnable()、Start()等默认函数的执行顺序和生命周期
- 神经网络分类
- 算法之QMR--ST算法
- SpringMVC的上传图片
- (精简)进程间和线程间的通信方式
- Discuz使用UCenter实现同步登录、注册、退出
- 5G结构模型和概念(未完待续...)