Servlet简明入门

首先请看一个servlet类:
package servlet;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class StudyServlet extends javax.servlet.http.HttpServlet {
    private static final long serialVersionUID = 9186180488616928747L;
    private String contextPrarmeter;
    private String servletPrarmeter;

    @Override public void init() throws ServletException {
        // init方法在Servlet的生命周期中只会执行一次,一般在这个地方初始化应用中共用的数据。
        System.out.println("in StudyServlet init()...");
        // 下面是读取应用级参数的方法,对应的参数放置在<context-param>小节里面
        ServletContext context = getServletContext();
        contextPrarmeter = context.getInitParameter("contextPrarmeter");
        // 下面是读取Servlet参数的方法,对应的参数放置在<servlet>小节的<init-param>小节里面
        servletPrarmeter = getInitParameter("servletPrarmeter");
    }

    @Override protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        doProcess(request, response);
    }

    @Override protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        doProcess(request, response);
    }

    @Override public void destroy() {
        // destroy方法在Servlet的生命周期中只会执行一次。一般用于释放应用中使用的某些资源。
        System.out.println("in StudyServlet destroy()...");
        contextPrarmeter = null;
        servletPrarmeter = null;
    }

    private void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException,
        IOException {
        // 每次请求都会进入到本方法,请注意:doGet和doPost都是调用的本方法,它们对应了html中GET和POST两种请求方式。
        System.out.println("in StudyServlet doProcess()...");
        /*
         * 读取请求的参数 如果是GET方式的请求,它就是请求的URL中?后面的部分,例如StudyServlet.jsp?mode=xxxx
         * 如果是POST方式的请求,它就是form中的一个name为mode的表单元素的数据,例如<input type="hidden"
         * name="mode" value="xxxx">
         */
        String parameter = request.getParameter("mode");
        // 获取页面输出对象
        PrintWriter out = response.getWriter();
        // 演示设定不同输出类型,这里只演示了两种模式。
        if ("xml".equalsIgnoreCase(parameter)) { //xml输出
            response.setContentType("text/xml");
            out.println("<?xml version=/"1.0/" encoding=/"UTF-8/"?>");
            out.println("<root>");
            out.println("<ContextPrarmeter>" + contextPrarmeter + "</ContextPrarmeter>");
            out.println("<ServletPrarmeter>" + servletPrarmeter + "</ServletPrarmeter>");
            out.println("</root>");
        }
        else { //普通html输出
            response.setContentType("text/html");
            out.println("<html><body>");
            out.println("ContextPrarmeter:" + contextPrarmeter + "<br>");
            out.println("ServletPrarmeter:" + servletPrarmeter);
            out.println("</body></html>");
        }
    }
}
然后在web.xml中添加下面的配置。
<context-param>
    <description>Context参数测试</description>
    <param-name>contextPrarmeter</param-name>
    <param-value>TestContextPrarmeter</param-value>
</context-param>
<servlet>
    <description>Servlet学习</description>
    <display-name>StudyServlet</display-name>
    <servlet-name>StudyServlet</servlet-name>
    <servlet-class>servlet.StudyServlet</servlet-class>
    <init-param>
        <description>Servlet参数测试</description>
        <param-name>servletPrarmeter</param-name>
        <param-value>TestServletPrarmeter</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>StudyServlet</servlet-name>
    <url-pattern>/StudyServlet.jsp</url-pattern>
</servlet-mapping>
配置的简单说明:
<load-on-startup>1</load-on-startup>表示应用启动的时候就初始化Servlet,也就是调用init方法。如果没有这一项,就是在初次访问Servlet的时候初始化。
<servlet>和<servlet-mapping>小节共同构成一个映射,让你通过http://主机:端口/应用/StudyServlet.jsp访问servlet.StudyServlet,class名称是包含包路径的(废话)。
<context-param>和<init-param>小节在类里面的注释说明了使用方法。
现在可以发布并启动你的应用了,启动浏览器,输入http://主机:端口/应用/StudyServlet.jsp看看。
页面是不是显示:
ContextPrarmeter:TestContextPrarmeter
ServletPrarmeter:TestServletPrarmeter
如果输入http://主机:端口/应用/StudyServlet.jsp?mode=xml
浏览将会显示一个xml文件。
如果你细心观察服务器控制台的输出,就会发现:
in StudyServlet init()... 和 in StudyServlet destroy()... 都只会出现一次。这两个方法都只会在应用程序的生命周期中出现一次。
而in StudyServlet doProcess()...是每次访问StudyServlet.jsp都会出现。
好了,虽然这个示例很简短,但是已经包含了建置一个Servlet的基本元素,以及读取Servlet、以及应用的配置的方法,也就是入门的知识。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值