• 技术文章 >Java >java教程

    怎么配置servlet

    (*-*)浩(*-*)浩2019-05-16 17:03:02原创6515
    Java Servlet是一个基于Java技术的Web组件,运行在服务器端,由Servlet容器所管理,用于生成动态的内容。Servlet是平台独立的Java类,编写一个Servlet实际上就是按照Servlet规范编写一个Java类。

    Servlet运行需要一个运行环境,即需要一个Servlet容器,这里我们使用Tomacat。Tomcat作为一个Web服务器,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器。

    实现一个helloWord例子。

    推荐课程:Java教程

    方式一:通过实现Servlet接口来编写Servlet类,需要实现接口中定义的5个方法,代码如下:

    package day_052102;
    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.Servlet;
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    /*
     这里通过实现Servlet接口来编写一个简单的Servlet
     */
    public class ServletDemo implements Servlet
    {
        public void init(ServletConfig config) throws ServletException
        {
        }
        public ServletConfig getServletConfig()
        {
            
            return null;
        }
        public String getServletInfo()
        {
            return null;
        }
        public void destroy()
        {
        }
        public void service(ServletRequest req, ServletResponse res)
                throws ServletException, IOException
        {
            PrintWriter out=res.getWriter();
            out.print("hello World!");
            out.close();
        }
    }

    然后进行web.xml的配置,代码如下:

    <servlet>
         <servlet-name>ServletDemo</servlet-name>
         <servlet-class>day_052102.ServletDemo</servlet-class>
     </servlet>
     <servlet-mapping>
         <servlet-name>ServletDemo</servlet-name>
         <url-pattern>/ServletDemo</url-pattern>
     </servlet-mapping>

    点击运行按钮,启动tomacat服务器,然后在浏览器中输入http://localhost:8080/day_052102/ServletDemo,即可进行实现页面显示hello World的示例。结果如下。


    方式二:继承抽象类GenericServlet,该类定义了一个通用的Servlet。

    public abstract class GenericServlet implements Servlet, ServletConfig, java.io.Serializable

    代码示例实现hellWord如下:

    public class GenericServletDemo extends GenericServlet
    {
        @Override
        public void service(ServletRequest req, ServletResponse res)
                throws ServletException, IOException
        {
            PrintWriter out=res.getWriter();
            out.println("hello World!");
            out.close();        
        }
    
    }

    方式三:通过继承抽象的HttpServlet类,此类继承于GenericServlet类。

    PS:HttpServlet类中没有抽象的方法。这个类重写了service方法,它会根据请求的方式调用doGet或者doGet方法,部分源码如下:

    protected void service(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException 
    {
            String method = req.getMethod();
            if (method.equals(METHOD_GET))   //当请求方式为GET时,调用doGet方法
            {   
                long lastModified = getLastModified(req);
                if (lastModified == -1) 
                {
                    // servlet doesn't support if-modified-since, no reason
                    // to go through further expensive logic
                    doGet(req, resp);
                } 
                else
                {
                    long ifModifiedSince;
                    try 
                    {
                        ifModifiedSince = req.getDateHeader(HEADER_IFMODSINCE);
                    } 
                    catch (IllegalArgumentException iae)
                    {
                        // Invalid date header - proceed as if none was set
                        ifModifiedSince = -1;
                    }
                    if (ifModifiedSince < (lastModified / 1000 * 1000))
                    {
                        // If the servlet mod time is later, call doGet()
                        // Round down to the nearest second for a proper compare
                        // A ifModifiedSince of -1 will always be less
                        maybeSetLastModified(resp, lastModified);
                        doGet(req, resp);
                    }
                    else
                    {
                        resp.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
                    }
                }
            }

    如果在自己写的类中重写了service方法,那么Servlet容器就会把请求交给你重写的service方法处理。

    public class HttpServletDemo extends HttpServlet
    {
        protected void doGet(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException
        {
            PrintWriter out=resp.getWriter();
            out.println("hello!");
            out.close();
        }
    }

    以上就是怎么配置servlet的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:servlet
    上一篇:java字符类型采用什么编码方式 下一篇:java分为什么语言
    PHP编程就业班

    相关文章推荐

    • jsp怎么调用servlet• 什么是servlet概念?• servlet一般什么时候销毁• servlet api什么意思

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网