javaweb基础 - Servlet

引用:Java Web(一) Servlet详解!!

Servlet:处理请求和发送响应的过程是由一种叫做Servlet的程序来完成的,通过servlet可以实现动态web开发。

<!-- *号通配符格式:"*.扩展名" or "/{path}/*" -->
<servlet>
    <servlet-name>ServletDemo1</servlet-name>
    <servlet-class>gacl.servlet.study.ServletDemo1</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>ServletDemo1</servlet-name>
<url-pattern>/*</url-pattern>

1. 响应过程

Java Servlet API(Servlet <– HttpServlet):Servlet容器(tomcat)和servlet之间的接口,定义了serlvet的各种方法,以及作为参数的对象类(如:ServletRequest和ServletResponse)

  1. Tomcat将http请求文本接收并解析,然后封装成HttpServletRequest类型的request对象交给servlet(所有的HTTP头数据读可以通过request对象调用对应的方法查询到)

  2.Tomcat同时会要响应的信息封装为HttpServletResponse类型的response对象,通过设置response属性就可以控制要输出到浏览器的内容,然后将response交给tomcat,tomcat就会将其变成响应文本的格式发送给浏览器

2. servlet生命周期

  1. load-on-startup参数 > 决定装载并创建Servlet实例对象的时机,同时调用init()方法初始化该 Servlet(对于多次请求,init()方法只执行一次

  2. 执行service(ServletRequest req,ServletResponse res)方法,根据请求方法不同调用doGet() 或者 doPost()等。

  3. 服务器关闭时,执行destroy()方法,并将servlet卸载。

3. Servlet结构

1. Servlet接口

2. ServletConfig接口

3. GenericServlet类

GenericServlet类: 实现了ServletConfig接口,可以直接获得ServletContext

public void init(ServletConfig config) throws ServletException{
    this.config = congid;
    this.init();
}
public void init() throws ServletException{
    //override(用户只需重写init()方法,而当servlet初始化时,将会调用init(ServletConfig config)方法.
}
4. HttpServlet类

Servlet* 继承结构(*表示Request或Response): 
  Servlet* <– httpServlet* <– *Facade(req,res的实际类型) 
1. request和response在Tomcat提交给Servlet时被转换为Servlet* 类型,通过service(ServletRequest req, ServletResponse res)方法转换为HttpServlet* 
2. service(HttpServletRequest req, HttpServletResponse res)方法进行调用(doPost(),doGet()等)

5. ServletContext对象
config = getServletConfig();                          //多用于Servlet的init(ServletConfig config)方法中
config.getInitParameter("key")和config.getInitParameterNames();
ServletContext context1 = config.getServletContext(); 

ServletContext context2 = this.getServletContext();   //继承自GenericServlet类的方法,GenericServlet实现了Servletconfig类
context.getRequestDispatcher("/servlet/Servlet1").forward(request, response); //调用forward方法转发给servlet1.(绝对路径)
context.getInitParameter("key")和context.getInitParameterNames();

1. web项目中共享数据 
  setAttribute(String name, Object obj) 在web项目范围内存放内容,以便让在web项目中所有的servlet读能访问到 
  getAttribute(String name) 通过指定名称获得内容 
  removeAttribute(String name) 通过指定名称移除内容

2. web项目初始化参数 — 在web.xml的context-param>标签中配置 
  getInitPatameter(String name)  //通过指定名称获取初始化值 
  getInitParameterNames()  //获得枚举类型

3. 获取web项目资源 
  String realPath = getServletContext().getRealPath(“/WEB-INF/web.xml”); 
  String src = getResourcePaths(“/WEB-INF’); 
  InputStream in = getServletContext().getResourceAsStream(“/WEB-INF/web.xml”);

//servlet实例
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ServletDemo1 extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
        out.println("<HTML>");
        out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
        out.println("  <BODY>");
        out.print("    This is ");
        out.print(this.getClass());
        out.println(", using the GET method");
        out.println("  </BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
        out.println("<HTML>");
        out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
        out.println("  <BODY>");
        out.print("    This is ");
        out.print(this.getClass());
        out.println(", using the POST method");
        out.println("  </BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
    }
}

原文地址:https://www.cnblogs.com/kiqi/p/10456509.html

时间: 2024-10-10 06:59:14

javaweb基础 - Servlet的相关文章

Javaweb基础---&gt;Servlet(转载)

今天看到这篇博客,感觉还不错,拿来借鉴学习一下. 一.Servlet 是什么? Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层. 使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页. java Servlet 通常情况下与使用 CGI(Common Gateway Interface,公共网关接口)实现的程

JavaWeb基础—Servlet重要对象

一.ServletConfig对象 当servlet配置了初始化参数后(<init-param> <param-name> <param-value>),web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init()方法时,将ServletConfig对象传递给servlet.进而,我们通过ServletConfig对象就可以得到当前servlet的初始化参数信息. 具体获取的操作是重写ini

javaweb基础----&gt;Servlet(转载)

一.Servlet 是什么? JavaServlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层. 使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页. javaServlet 通常情况下与使用 CGI(Common Gateway Interface,公共网关接口)实现的程序可以达到异曲同工的效果.但是相比于 CGI,Serv

JavaWeb基础: 学习大纲

JavaWeb基础: Web应用和Web服务器 JavaWeb基础: Tomcat JavaWeb基础:HTTP协议和基于Restful的架构 JavaWeb基础: Web工程配置文件 JavaWeb基础:Servlet JavaWeb基础:Servlet Request JavaWeb基础:Servlet Response JavaWeb基础: Cookie

图解 & 深入浅出 JavaWeb:Servlet必会必知

Writer      :BYSocket(泥沙砖瓦浆木匠) 微         博:BYSocket 豆         瓣:BYSocket FaceBook:BYSocket Twitter    :BYSocket "眨眼间,离上一篇写技术博文时隔1个月.怕自己真的生疏了,都是备案太慢惹得.哈哈,继续high~ " 从[JavaEE 要懂的小事] Http相关,一直想写点Web开发相关的.最近项目接口开发紧,还有准备新的九月份战斗.JDK IO源码就隔一段落,温故知新看看Ser

(一)JavaWeb基础知识

JavaWeb基础知识 一.基本概念 1.1.WEB开发的相关知识 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资源分为: 1.静态web资源(如html 页面):指web页面中供人们浏览的数据始终是不变. 2.动态web资源:指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同. 静态web资源开发技术:Html 常用动态web资源开发技术:JSP/Servlet.ASP.P

JavaWeb:Servlet技术

JavaWeb:Servlet技术 快速开始 Servlet是什么 Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层.使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页. Servlet在Web应用程序中的位置: Servlet的任务 Servlet 执行以下主要任务: 读取客户端(浏览器)发送的显式的数据.

JavaWeb之Servlet入门(二)

1. 准备 在JavaWeb之Servlet入门(一)中,我们完成了第一个Servlet程序,完成了从URL到后台控制器的中转过程,接下来我们延续JavaWeb之Servlet入门(一)学习下如何传参及返回,如何配置404和error页. 2. Servlet传递参数 1)调整HelloServlet public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException

Java Web基础 --- Servlet 综述(实践篇)

摘要: 伴随 J2EE 6一起发布的Servlet 3.0规范是Servlet规范历史上最重要的变革之一,它的许多新的特性都极大的简化了 Java Web 应用的开发.本文从一个简单的 Servlet 例子开始,说明了如何开发.配置一个 Servlet.此外,还重点叙述了Servlet的一些新特性,包括Servlet 异步处理.Servlet 非阻塞IO 以及 Servlet 文件上传等内容,以便我们对Servlet有一个更全面的了解. 本篇主要介绍 Servlet 实践方面的知识,更多关注于S