HttpServlet(五)

除了直接通过实现Servlet接口创建一个Servlet实现类,我们还可以通过继承HTTPServlet来创建一个Servlet实现类。

HTTPServlet继承了GenericServlet抽象类,GenericServlet实现了Servlet接口。

HTTPServlet


GenericServlet


实例代码

创建一个Servlet,而不是直接创建一个Class

package com.ken.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class QuickStartServlet2 extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.getWriter().write("doGet running...");
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}

创建好Servlet之后,eclipse自动帮我们生成了web.xml中的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">
	<display-name>servlet_first</display-name>
	<servlet>
		<servlet-name>abc</servlet-name>
		<servlet-class>com.ken.servlet.QuickStartServlet</servlet-class>
		<init-param>
			<param-name>url</param-name>
			<param-value>jdbc:mysql:///mydb</param-value>
		</init-param>
	</servlet>
	<servlet-mapping>
		<servlet-name>abc</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
	
	<servlet>
		<servlet-name>QuickStartServlet2</servlet-name>
		<servlet-class>com.ken.servlet.QuickStartServlet2</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>QuickStartServlet2</servlet-name>
		<url-pattern>/quickStartServlet2</url-pattern>
	</servlet-mapping>
</web-app>

运行效果


运行成功。

我们不是说每次请求都会访问service()方法吗?可是当前类中,只有doGet()和doPost()方法。

在当前类找不到,我们就去父类HttpServlet中找。


找到了service()方法。这个方法,主要就是把ServletRequest和ServletResponse转成HttpServletRequest和HttpServletResponse。

我们继续看service(request, response);


我们再看doGet()方法


可见,HttpServlet中调用service()方法,最终执行的是doGet()和doPost()方法。

所以,我们在自己写的Servlet中覆盖父类HttpServlet的doGet()和doPost()方法,效果就相当于执行service()方法。

小经验:创建模板


弹出如下dialog


ok->apply

然后,在我们写的Servlet中使用模板。


alt+/


模板内容:

package ${enclosing_package};

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ${primary_type_name} extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.getWriter().write("hello world...");
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值