SERVLET 学习笔记

来源:互联网 发布:淘宝已购买的宝贝 编辑:程序博客网 时间:2024/06/09 23:57

一、Servlet基本定义

  Servlet是服务器端上面运行的一段小的java程序,一个servlet就是一个简答的java类。通常servlet都是通过请求和返回的模式来被访问的,客户端通过resuest请求,servlet则通过response来返回需要的内容。

二、Tomcat容器等级

Tomcat容器等级分为四个等级,由内向外分别是:context容器àSERVLET容器àHOST(主机)容器àENGINE(引擎)容器。其中,CONTEXT容器,一个CONTEXT容器对应着一个WEB工程,而CONTEXT容器又是被SERVLET容器管理的。

 

三、手动编写第一个SERVLET

手动编写自己servlet需要以下三个步骤:

1、          继承自HTTPServlet

2、          重写doGET()方法,或者是doPost()方法,具体要根据客户端的请求的action的方式来确定实现。

 

3、          不要忘记在web.xml文件中注册自己编写的servlet类。

Servlet的继承关系如下:

编写自己的第一个servlet如下:MyServlet.Java

复制代码
package servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.log4j.Logger;/** * Servlet implementation class MyServlet */public class MyServlet extends HttpServlet {    private static final long serialVersionUID = 1L;    private static final Logger LOGGER = Logger.getLogger(MyServlet.class);    /**     * @see HttpServlet#HttpServlet()     */    public MyServlet() {        System.out.println("装载当前的 servlet");    }    /**     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse     *      response)     */    protected void doGet(HttpServletRequest request,            HttpServletResponse response) throws ServletException, IOException {        LOGGER.info("测试我的第一个servlet");        PrintWriter out = response.getWriter();        response.setContentType("text/html;charset=utf-8;");        out.println("<strong>get方式访问我的servlet成功!!</strong>");    }    /**     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse     *      response)     */    protected void doPost(HttpServletRequest request,            HttpServletResponse response) throws ServletException, IOException {        LOGGER.info("测试我的第一个servlet");        PrintWriter out = response.getWriter();        response.setContentType("text/html;charset=utf-8;");        out.println("<strong>post方式访问我的servlet成功!!</strong>");    }    @Override    public void init() throws ServletException {        // TODO Auto-generated method stub        LOGGER.info("当前的 servlet init");        System.out.println("当前的 servlet init");    }}
复制代码

 

Web.xml中的配置如下:

复制代码
<servlet>    <description>第一个测试的servlet</description>    <display-name>MyServlet</display-name>    <servlet-name>MyServlet</servlet-name>    <servlet-class>servlet.MyServlet</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>MyServlet</servlet-name>    <url-pattern>/MyServlet</url-pattern>  </servlet-mapping>
复制代码

JSP中的访问方式:

 

复制代码
<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>servlet测试</title></head><body>    <h1>我的第一个SERVLET程序</h1>    <hr>    <a href="MyServlet">get 方式请求servlet</a>    <form action="MyServlet" method="post">        <input type="submit" value="post方式请求 servlet">    </form></body></html>
复制代码

 

四、TOMCAT中装载SERVLET方式:

A、 Servlet容器自动装载servlet,这个需要在web.xml中配置注册servlet的时候,加上load-on-startup的配置,配置如下:

复制代码
  <servlet>    <description>第一个测试的servlet</description>    <display-name>MyServlet</display-name>    <servlet-name>MyServlet</servlet-name>    <load-on-startup>1</load-on-startup>    <servlet-class>servlet.MyServlet</servlet-class>  </servlet>其中的数字越小,加载的优先级就会越高
复制代码

B、 Client首次向servlet请求,tomcat容器会加载servlet

 

C、 Servlet的类文件被修改更新之后,tomcat容器会重新加载servlet

 

五、Servlet于JSP的九大内置对象

 

先有的servlet,之后才有的JSP,jsp的前身就是servlet

 

 

六、SERVLET的跳转路径

Servlet的跳转路径分为:绝对路径相对路径两种方式

6.1 访问servlet的路径区分

复制代码
绝对路径:<a href="<%=request.getContextPath()%>/aaa/MyServlet">get 方式请求servlet</a>必须要加上项目的根目录相对路径:<a href="aaa/MyServlet">get 方式请求servlet</a>最前面不要“/”,此时加上斜线,表示是服务器的根目录,反而找不到对应的servlet。 切记:在  <url-pattern>/MyServlet</url-pattern>中配置路径一定是以“/”开头的,表示的是项目的根目录。
复制代码

6.2 servlet 内部跳转的路径区分

1.请求重定向:redirect  url会改变 相当于客户端重新请求response.sendRedirect(request.getContextPath() + "/test.jsp");2.服务器内部跳转:forward  url不会改变 request.getRequestDispatcher("/test.jsp").forward(request, response);
0 0
原创粉丝点击