Servlet开发

Servlet是什么?

java服务器小程序。用java编写的服务器端程序,是由服务器端调用和执行的、按照Servlet自身规范编写的java类。Servlet可以看成是用java编写的CGI,但是它的功能和性能比CGI更加强大

Servlet技术特点

Servlet带给开发人员最大的好处是它可以处理客户端传来的HTTP请求,并返回一个响应。同时给页面显示与逻辑进行分离。

可移植性、功能强大、安全、简洁、集成、模块化、扩展性和灵活性、高效耐久

Servlet的生命周期

Servlet部署在容器里,它的生命周期由容器管理:

装载Servlet :这项操作一般是动态执行的。有些服务器提供了相应的管理功能,可以在启动的时候就装载Servlet,并能够初始化特定的Servlet

创建一个Servlet实例

调用Servlet的init()方法

服务:如果容器接收到对此Servlet的请求,那么它调用Servlet的service()方法

销毁:实例被销毁,通过调用Servlet的destory()方法销毁Servlet。

Servlet常用接口

Servlet接口—->GenericServlet类—->HttpServlet类—->用户自定义Servlet
1、Servlet接口
init 初始化Servlet类
destroy 销毁Servlet实例以便回收占有的资源
service 响应客户端请求
getServletConfig 获取Servlet的配置信息
getServletInfo 获取Servlet的文本
2、GenericServlet类
String getInitParameter(String name)
返回具有指定名称的初始化参数值。通过调用config.getInitParameter(name)实现
ServletConfig getServletConfig()
返回传递到init()方法的ServletConfig对象
ServletContext getServletContext()
返回在config对象中引用的ServletContext
String getServletInfo()
返回空字符创
void log(String msg)
编写注册Servlet的入口,为此调用Servlet上下文的log()方法,Servlet的名字被加到消息文本的开头。
abstract void service(Request request,Response respones)throws ServletException,IOException
由Servlet引擎调用为请求对象描述的请求提供服务。这是GeneriServlet中唯一的抽象方法。因此他也是唯一必须被子类覆盖的方法。
String getServletName()
返回在WEB应用发布描述器(web.xml)中指定的Servlet的名字。
3、HttpServlet类
doGet(HttpServletRequest request,HttpServletResponse response)
由Servlet引擎调用处理一个HTTP GET请求。
doPost(HttpServletRequest request,HttpServletResponse response)
由Servlet引擎调用处理一个Http Post请求
doPut(HttpServletRequest request,HttpServletResponse response)
由Servlet引擎调用处理一个Http PUT请求
void doDelete(HttpServletRequest request,HttpServletResponse response)

servlet配置相关

getInitParameter(String name);
返回特定名字的初始化参数。即返回web.xml中servlet中的初始化名字的参数值
getInitParameterNames();
返回所有的初始化参数的名字
getServletContext()
返回Servlet的上下文对象的引用
getServletName() 返回servlet的名字

servlet异常相关

ServletException
getRootCause()
返回造成这个ServletException的原因

UnavailableException
当Servlet或者Filter暂时或者永久不能使用时,就会抛出这个异常

请求和相应相关

ServletRequest
代表了Servlet请求。

ServletResponse
代表了Servlet的响应

ServletInputStream
Servlet的输入流

ServletOutputStream
Servlet的输出流

ServletRequestWrapper
ServletRequest的实现

ServletResponseWrapper
ServletResponse的实现

HttpServletRequest
代表了HTTP的请求

getCookies()返回和客户端发送的Cookie。如果这个请求中没有Cookie,返回一个空数组
getSession()返回和客户端关联的Session。如果没有给客户端分配Session,返回null
getSession(boolean create) 如果没有给客户端分配session,则创建一个新session。
getParameter(String name)获取请求参数中的值
getParameterValues(String name)。这个值往往是checkbox或者select控件提交的,获得的值是一个String数组

HttpServletResponse
代表了HTTP的响应。它允许Servlet设置内容长度和回应的MIME类型,并且提供输出流ServletOutputStream。
addCookie(Cookie cookie) 在响应中增加一个Cookie
encodeURL(String url)
使用URL和一个SessionId重写这个URL
setContentType(String type)
设置MIME类型
setCharacterEncoding(String charset)
设置响应的字符编码类型

HttpServletRequestWrapper
HttpServletRequest的实现

HttpServletResponseWrapper
HttpServletResponse的实现

会话跟踪

一个Session可以通过Cookie或者重写URL来维持

getCreationTime()
返回创建session的时间

getId()
返回session的标识符

getLastAccessedTime()
返回客户端最后一次发出与这个Session有关的请求的时间。如果这个Session是新建立的,返回-1

getMaxInactiveInterval()
返回session最长存活时间

开发servlet步骤:
1.继承HttpServlet
2.配置web访问映射地址:
方式一:Annotation注解方式映射地址
方式二:通过在web.xml中配置servlet映射文件

/**
 * 这是一个简单的servlet程序:
 * 功能是输出一个html文档,文档内容为你好,世界
 * 访问该servlet程序的url地址是:应用程序路径/UserServlet
 */

package com.lizhenhua.servlet;

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;

/**
 * Servlet implementation class UserServlet
 */
@WebServlet("/UserServlet")
public class UserServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public UserServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置页面MIME和编码类型
        response.setContentType("text/html;charset=gb2312");
        //获得输出流对象
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head>");
        out.println("<title>HelloWorld</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("你好!世界");
        out.println("</body>");
        out.println("</html>");
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}

方式二实例:

/**
 * 这是一个简单的servlet程序:
 * 功能是输出一个html文档,文档内容为你好,世界
 * 访问该servlet程序的url地址是:应用程序路径/userServlet
 */

package com.lizhenhua.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;

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

    /**
     * @see HttpServlet#HttpServlet()
     */
    public UserServlet() {
        super();
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置页面MIME和编码类型
        response.setContentType("text/html;charset=gb2312");
        //获得输出流对象
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head>");
        out.println("<title>HelloWorld</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("你好!世界");
        out.println("</body>");
        out.println("</html>");
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

在web.xml中配置servlet映射关系

<?xml version="1.0" encoding="UTF-8"?>
<!-- 配置Web应用配置文件的根元素,并指定配置文件的Schema信息 -->
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
    <!-- 配置UserServlet文件访问信息 -->
    <servlet>
        <servlet-name>UserServlet</servlet-name>
        <servlet-class>com.lizhenhua.servlet.UserServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>UserServlet</servlet-name>
        <url-pattern>userServlet</url-pattern>
    </servlet-mapping>
</web-app>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值