zoukankan      html  css  js  c++  java
  • JavaWeb之第一个Servlet程序

    我使用的编辑器是Intellj Idea,并且配置maven插件,无论是Intellj还是eclipse,重要的是编程思想,无所谓编辑器。

      1. 编写一个Servlet实现类:HelloServlet:

    import javax.servlet.*;
    import java.io.IOException;
    
    public class HelloServlet implements Servlet {
        @Override
        public void init(ServletConfig servletConfig) throws ServletException {
            System.out.println("int...");
        }
    
        @Override
        public ServletConfig getServletConfig() {
            System.out.println("config...");
            return null;
        }
    
        @Override
        public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
            System.out.println("service...");
        }
    
        @Override
        public String getServletInfo() {
            System.out.println("servletInfo...");
            return null;
        }
    
        @Override
        public void destroy() {
            System.out.println("destory...");
        }
    }

         2.在web.xml文件中注册servlet实现类:

    <servlet>
    <!-- servlet注册的名字 -->
    <servlet-name>HelloServlet</servlet-name>
    <!-- servlet的全类名 -->
    <servlet-class>com.yding.web.HelloServlet</servlet-class>
    </servlet>

    <servlet-mapping>
    <!-- servlet的名字 -->
    <servlet-name>HelloServlet</servlet-name>
    <!-- servlet的映射 -->
    <url-pattern>/hello</url-pattern>
    </servlet-mapping>

      3.启动tomcat,将web项目部署到tomcat中,第一次访问http://localhost:8080/JavaWeb/hello时,servlet初始化,调用init()方法,并调用service方法,

      在以后访问此链接时,都会调用service()方法,当服务器关闭时,会调用destroy()方法。

    int...
    service...
    service...
    destory...

       4. <load-on-startup>参数,可以控制servlet的加载时间,1表示加载tomcat同时加载servlet

    <servlet>
      <!-- servlet注册的名字 -->
      <servlet-name>HelloServlet</servlet-name>
      <!-- servlet的全类名 -->
      <servlet-class>com.yding.web.HelloServlet</servlet-class>
      <!-- 可以指定servlet的创建时间 1 表示启动tomcat时就加载此servlet -->
      <load-on-startup>1</load-on-startup>
    </servlet>

      5.servlet可以匹配多个映射:

    <servlet-mapping>
        <!-- servlet的名字 -->
        <servlet-name>HelloServlet</servlet-name>
        <!-- servlet的映射 -->
        <url-pattern>/hello</url-pattern>
      </servlet-mapping>
    
      <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/hello2</url-pattern>
      </servlet-mapping>

      6.serlet的URL通配符

      通配符只可以有两种形式:  第一种形式:  .action 或.html等    第二种形式:/*  不可以 /*.action

      7.servletConfig,这是servlet的参数

    <servlet>
      <!-- servlet注册的名字 -->
      <servlet-name>HelloServlet</servlet-name>
      <!-- servlet的全类名 -->
      <servlet-class>com.yding.web.HelloServlet</servlet-class>
     
    <init-param> <param-name>username</param-name> <param-value>root</param-value> </init-param> <init-param> <param-name>password</param-name> <param-value>lfdy</param-value> </init-param>
    <!-- 可以指定servlet的创建时间 1 表示启动tomcat时就加载此servlet --> <load-on-startup>1</load-on-startup> </servlet>
     public void init(ServletConfig servletConfig) throws ServletException {
            String username = servletConfig.getInitParameter("username");
            System.out.println(username);
            String password = servletConfig.getInitParameter("password");
            System.out.println(password);
            System.out.println("int...");
            Enumeration<String> enumeration = servletConfig.getInitParameterNames();
            while(enumeration.hasMoreElements()){
                String name = enumeration.nextElement();
                String value = servletConfig.getInitParameter(name);
                System.out.println(name+": "+value);
            }
        }

    结果:

    root
    lfdy
    int...
    password: lfdy
    username: root
  • 相关阅读:
    pyenv: python2.7: command not found The `python2.7' command exists in these Python versions: 2.7.5
    Gazebo_02_build_a_robot
    Gazebo_01_getting_start
    vscode等编辑器中报Exception has occurred: ModuleNotFoundError No module named 'requests'
    Ubuntu16.04安装Python3.8以后出现lsb_release/No LSB modules are available的错误
    C语言字符串定义(数组&指针)
    电脑软件更新管理
    VS2017自定义新建模板
    《SQL必知必会-第四版》--学习摘抄
    实体类封装数据库查询信息(工具一)
  • 原文地址:https://www.cnblogs.com/lfdingye/p/7512648.html
Copyright © 2011-2022 走看看