Servlet开发的三种方法
第一种 实现 Servlet 接口,需要覆写 Servlet 的5个方法,并将ServletConfig对象保存到类级变量中
- package app01a;
- import java.io.IOException;
- import java.io.PrintWriter;
- import javax.servlet.Servlet;
- import javax.servlet.ServletConfig;
- import javax.servlet.ServletException;
- import javax.servlet.ServletRequest;
- import javax.servlet.ServletResponse;
- import javax.servlet.annotation.WebServlet;
- @WebServlet(name = "MyServlet", urlPatterns = {"/my"})
- public class MyServlet implements Servlet {
- private transient ServletConfig servletConfig;
- @Override
- public void destroy() { }
- @Override
- public ServletConfig getServletConfig() {
- return servletConfig;
- }
- @Override
- public String getServletInfo() {
- return "My Servlet";
- }
- @Override
- public void init(ServletConfig servletConfig) throws ServletException {
- this.servletConfig = servletConfig;
- }
- @Override
- public void service(ServletRequest resuest, ServletResponse response) throws ServletException, IOException {
- String servletName = servletConfig.getServletName();
- response.setContentType("text/html");
- PrintWriter writer = response.getWriter();
- writer.print("<html><head></head>"
- + "<body>Hello form "
- + servletName
- + "</body></html>");
- }
- }
第二种 继承抽象类 GenericServlet覆写service()方法
- package app01a;
- import java.io.IOException;
- import java.io.PrintWriter;
- import javax.servlet.GenericServlet;
- import javax.servlet.ServletConfig;
- import javax.servlet.ServletException;
- import javax.servlet.ServletRequest;
- import javax.servlet.ServletResponse;
- import javax.servlet.annotation.WebInitParam;
- import javax.servlet.annotation.WebServlet;
- @WebServlet(name = "GenericServletDemoServlet", urlPatterns = { "/generic" },
- initParams = { @WebInitParam(name = "admin", value = "Harry taciak"),
- @WebInitParam(name = "email", value = "admin@example.com")
- }
- )
- public class GenericServletDemoServlet extends GenericServlet {
- private static final long serialVersionUID = 1L;
- @Override
- public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
- ServletConfig servletConfig = getServletConfig();
- String admin = servletConfig.getInitParameter("admin");
- String email = servletConfig.getInitParameter("email");
- response.setContentType("text/html");
- PrintWriter writer = response.getWriter();
- writer.print("<html><head></head><body>" +
- "Admin: " + admin +
- "<br/>Email: " + email +
- "</body></html>");
- }
- }
第三种 继承类 HttpServlet 覆写doGet()和doPost()方法 public abstract class HttpServlet extends GenericServlet
- package app01c;
- import java.io.IOException;
- import java.io.PrintWriter;
- import javax.servlet.ServletException;
- import javax.servlet.annotation.WebServlet;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- @WebServlet(name = "SimleServlet", urlPatterns = {"/simple"})
- public class SimpleServlet extends HttpServlet {
- private static final long serialVersionUID = 1L;
- public SimpleServlet() {
- super();
- }
- /**
- * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
- */
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- response.setContentType("text/html");
- PrintWriter writer = response.getWriter();
- writer.println("<html>");
- writer.println("<head>");
- writer.println("</head>");
- writer.println("<body>");
- writer.println("This is the Simple Servlet");
- writer.println("</body>");
- writer.println("</html>");
- }
- /**
- * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
- */
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- doGet(request, response);
- }
- }
GenericServlet、HttpServlet是Servlet接口有两个默认的实现类。
HttpServlet在原有的Servlet接口上添加了一些HTTP协议的处理方法,是能够处理HTTP请求的Servlet。其功能比Servlet更加强大,因此开发人员在编写Servlet时,通常应继承HttpServlet类,而不是直接实现Servlet接口。
HttpServlet在实现Servlet接口时覆写了service()方法,该方法体内的代码会自动判断用户的请求,如果是Get请求,则自动调用HttpServlet的doGet()方法;如果是Post请求,则自动调用doPost()方法。通常开发人员在编写Servlet时,只需要覆写doGet()或doPost()方法,而不用再去覆写service()方法。
Servlet开发的三种方法的更多相关文章
- struts2的action访问servlet API的三种方法
学IT技术,就是要学习... 今天无聊看看struts2,发现struts2的action访问servlet API的三种方法: 1.Struts2提供的ActionContext类 Object g ...
- Action访问Servlet API的三种方法
一.为什么要访问Servlet API ? Struts2的Action并未与Servlet API进行耦合,这是Struts2 的一个改良,从而方便了单独对Action进行测试.但是对于Web控制器 ...
- Servlet实现的三种方法
(1)方法一: //这是第一个实现servlet的方法.使用时限servlet接口的方法来实现,使用的时候须要引用servlet-api.jar package com.lc; import java ...
- Java Web开发中用Tomcat部署项目的三种方法
第一种方法:在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加: <Context path="/hello" docBase ...
- (OPC Client .NET 开发类库)网上很多网友都有提过,.NET开发OPC Client不外乎下面三种方法
1. 背景 OPC Data Access 规范是基于COM/DCOM定义的,因此大多数的OPC DA Server和client都是基于C++开发的,因为C++对COM/DCOM有最好的支持.现在, ...
- LwIP协议栈开发嵌入式网络的三种方法分析
LwIP协议栈开发嵌入式网络的三种方法分析 摘要 轻量级的TCP/IP协议栈LwIP,提供了三种应用程序设计方法,且很容易被移植到多任务的操作系统中.本文结合μC/OS-II这一实时操作系统,以 ...
- C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失问题的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中!=、==、!==、===的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?
C#中??和?分别是什么意思? 在C#中??和?分别是什么意思? 1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; ...
- struts2开发action 的三种方法以及通配符、路径匹配原则、常量
struts2开发action 的三种方法 1.继承ActionSupport public class UserAction extends ActionSupport { // Action中业务 ...
- 痞子衡嵌入式:在IAR开发环境下将关键函数重定向到RAM中执行的三种方法
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是在IAR开发环境下将关键函数重定向到RAM中执行的三种方法. 嵌入式项目里应用程序代码正常是放在 Flash 中执行的,但有时候也需要将 ...
随机推荐
- php正则替换双引号里面的字符
- Java的map键值对的用法,map的遍历,Entry对象的使用
思路: 1.定义集合 2.存储数据 3.添加元素 4.遍历 4.1将需要遍历的集合的键封装到set集合中(这用到了entrySet方法,和Entry对象) 4.2声明迭代器或者用for增强循环 4.3 ...
- Struts学习资料
Strust组件—ActionServlet详解 http://ltc603.iteye.com/blog/68637
- 整理一些好用的css, javascript资源网站等
CSS: CSS3信息:http://www.css3.info/ css3生成器:http://css3generator.com/ css3 cross brower生成器:http://css3 ...
- Java Web开发和Python Web开发之间的区别
今天的文章讨论了Java Web开发和Python Web开发之间的区别.我不鼓励我们在这里从Java Web迁移到Python Web开发.我只是想谈谈我的感受.它不一定适合所有情况,仅供我们参考. ...
- CentOS 查看进程状态
Linux中ps与top命令 ============================================================================ 这两个命令都 ...
- const 全面理解
问题1:const int a : 和 int const a :的区别 定义一个变量: 类型描述符 + 变量名 类型描述符包括类型修饰符和数据类型. 类型修饰符有:short long u ...
- js导出excel:前端当前数据的导出
网上找的库文件,同样做了修改.在导出的时候,有时候数据第一列和最后一列可能是复选框和操作按钮,这个是我们不需要的,加了这个的过滤 //table2excel.js /* * jQuery table2 ...
- 最小生成树kruskal模板
算法思路:每次选取权值最小的边,判断这两个点是否在同一个集合内,如果在则跳过,如果不在则加上这条边的权值 可以使用并查集储存结点,可以快速判断结点是否在同一集合内. #include<iostr ...
- 干净的ssm框架项目
其中数据库只有如下表与字段 访问效果: 项目下载: 干净的ssm框架项目.rar