Servlet基础

一. 什么是servlet

  • servlet是在服务器上运行的小程序。一个servlet就是一个java类,并且可以通过“请求-响应”编程模型来访问的这个驻留在服务器内存里的servlet程序。
  • jsp的前身就是servlet

二. Tomcat容器等级

这里写图片描述

Tomcat容器分为四个等级:
1)Container 容器,集装箱
2)Engine 引擎容器
3)Host 主机()
4)Servlet容器(tomcat最低级别的容器)里面包含了一个或多个Context
—— Context (上下文,背景,环境) 一个context对应一个web项目
—— Wrapper 容器里的封装部分。

三. 第一个Servlet

创建一个Servlet需要经过以下步骤:
1)新建一个Java类,继承“javax.servlet.http.HttpServlet”;
2)实现“doGet()”方法或“doPost()”方法处理不同请求

package servlet;

import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;
//继承HttpServlet
public class HelloServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        System.out.println("处理get请求");
        response.setContentType("text/html;charset=utf-8");  //设置解析类型及编码
        PrintWriter out = response.getWriter(); //获取输出流
        out.println("<em>收到你的get...</em><br>");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        System.out.println("处理post请求");
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter(); //获取输出流
        out.println("<em>收到你的post...</em><br>");
    }

}

3)在应用配置文件“web.xml”中注册新建的Servlet;

  <servlet>
    <servlet-name>HelloServlet</servlet-name>  //servlet名字
    <servlet-class>servlet.HelloServlet</servlet-class> //servlet类(详细到包)
  </servlet>
  <servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>  //servlet名字
    <url-pattern>/servlet/HelloServlet</url-pattern> //该类文件的相对路径
  </servlet-mapping>

这样,在jsp页面中通过get或post请求该servlet,servlet做出响应

<body>
    <h1>第一个servlet</h1>
    <hr>
    <a href="servlet/HelloServlet">get方式请求servlet</a>
    <form action="servlet/HelloServlet" method="post">
        <input type="submit" value="post方式请求servlet">   
    </form>
  </body>

使用myeclipse在src中新建servlet文件,可以自动继承HttpServlet,并在web.xml中完成注册

对于以上代码,存在这样的执行流程:
1、提交超链接请求后,服务器会在web.xml中的<servlet-mapping>寻找对应的url(url-pattern)地址,然后得到这个servlet的名称。
2、得到名称后,在servlet中寻找名称相同的标签,然后得到处理类(servlet-class文件)
3、进入servlet处理类,根据请求方式(get或者post)执行doGet或者doPost)方法

四. Servlet的生命周期

这里写图片描述

Servlet装载的三种情况:
1、自动装载:某些Servlet如果需要在Servlet容器启动时就加载,需要在web.xml下它的<Servlet>标签里中,添加优先级代码:
<Servlet>
<load-on-startup>1<load-on-startup>
</Servlet>

数字越小表示该servlet的优先级越高,会先于其他自动装载的优先级较低的先装载
2、Servlet容器启动后,客户首次向某个Servlet发送请求时,Tomcat容器会加载它
3、当Servlet类文件被更新后,也会重新自动加载

Servlet是长期驻留在内存里的。某个Servlet一旦被加载,就会长期存在于服务器的内存里,直到服务器关闭
Servlet被装载后,Servlet容器创建一个Servlet实例并且调用Servlet的init()方法进行初始化。在Servlet的整个生命周期内,init()方法只被调用一次。
当服务器关闭时,会调用Servlet的destroy()方法Servlet销毁

五. 获取Jsp内置对象

这里写图片描述

六. Servlet路径跳转

这里写图片描述

例如,图中这种目录结构
1、JSP跳转到Servlet
1)相对路径 <a href="servlet/HelloServlet"></a>
*注意:如果写成”/servlet/TestServlet”会报错,因为第一个’/’表示的是【服务器根目录:http://localhost:8080/
2)绝对路径,通过内置成员变量path实现,<a href="<%=path%>/servlet/TestServlet"></a>
*注意:这里的path得到的是项目根目录,如【http://localhost:8080/ServletDemo

2、Servlet跳转JSP
1)请求重定向:response.sendRedirect(request.getContextPath()+"/index.jsp");这里通过request.getContextPath()方法获得项目根目录,或者通过”../index.jsp”取得上层路径得到
2)服务器内部转发:request.getRequestDispatcher("../index.jsp").forward(req,resp);

3、web.xml中的<url-pattern>
<url-pattern>/servlet/RegServlet</url-pattern>
这里必须以/开头,斜线表示项目的根目录

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值