• Servlet 3—— FirstServletWebApp


    FirstServletWebApp的开发步骤

    1、在CATALINA_HOME/webapps/目录下新建FirstServletWebApp文件夹,该文件夹就是该webapp的根。

    2、在webapp的根下新建文件夹起名WEB-INF,必须全部大写,而且必须完全相同,这个文件夹是SUN制定的规范,名字是规范,位置也是规范。

    3、在WEB-INF目录下新建一个文件夹必须叫做classes,这个文件夹的名字以及位置也是SUN制定的规范,这个文件夹下将来存放javaweb程序员开发的java的字节码文件。

    4、在WEB-INF目录下必须有一个配置文件叫做web.xml,这个配置文件可以从其他项目中拷贝。该文件在Tomcat服务器启动的时候解析,所以这个文件如果编写的不合语法,启动Tomcat服务器的时候会出现XML文件的解析异常。如果这个文件解析失败,表示该webapp启动失败(Tomcat可以启动成功),一个webapp对应一个web.xml文件。一个合法的web.xml文件应该具备以下信息:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
    http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    version="4.0">
    </web-app>

    5、编写HelloServlet实现javax.servlet.Servlet接口并且重点实现service方法。编写java源程序,该java源程序可以在任意位置编写,只要将其编写java源代码编译生成字节码文件就可以。最终服务器执行的是字节码程序。执行的是classes目录中的字节码。(此时在WEB-INF目录下新建src文件夹,这不是必须的,不是SUN制定的规范)

    6、servlet-api.jar配置到环境变量classpath中。(只是让java源程序编译生成正常的字节码文件)

    7、HelloServlet.java源程序编译生成字节码,将字节码拷贝到classes目录下。

    8、开始编写web.xml文件,如下所示:(web.xml文件中配置的标签是SUN制定的规范,标签不能随便写,因为Tomcat服务器已经编写了web.xml文件的解析程序,Servlet规范包括文件的名称、文件的位置、类、接口、配置文件编写方式等。)

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
    http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    version="4.0">
      <servlet>
        <servlet-name>firstServlet</servlet-name>
        <servlet-class>HelloServlet</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>firstServlet</servlet-name>
          <url-pattern>/servlet/hello</url-pattern>
          <url-pattern>/a/b/c/d/e/f</url-pattern>
      </servlet-mapping>
    </web-app>

    9、启动Tomcat服务器,打开浏览器在地址栏上直接输入URL访问ServletURL如下所示:注:一个servlet标签对应一个servlet-mapping标签,servlet标签和servlet-mapping标签通过servlet-name进行联系,所以servlet-name标签中的文本可以随意编写,只要一致即可。servlet-class标签配置servlet的完整类名,如果这个类有包名,必须添加包名。url-pattern主要编写请求路径,这个请求路径必须以“/”开始,只要以“/”开始即可,后续的具体路径可以随意(但是这个路径一旦定下来,浏览器向服务器发送请求的时候,超链接发送的请求路径必须和url-pattern中配置的路径一致),web.xml文件的配制主要作用是将“Servlet类名”和“请求路径”绑定在一起。

    10、当然我们也可以编写HTML,在HTML中使用超链接发送请求,超链接的编写方式如下所示:

    • <a href="/FirstServletWebApp/servlet/hello">访问HelloServlet</a>
    • <a href="/FirstServletWebApp/a/b/c/d/e/f">访问HelloServlet</a>

    11、路径总结:到目前为止路径共编写了两个:

    • 超链接中的路径
    • web.xml文件中的路径
    • 它们路径都是以/”开始,都是使用了绝对路径,其中超链接上的路径比web.xml文件中的路径多一个“项目名称”

    12、如果希望向浏览器输出HTML代码执行以下程序:

    • 设置响应的内容类型以及字符编码方式,解决响应中的中文乱码问题(必须在获取响应流之前设置)
    1. response.setContentType(“text/html;charset=GB18030”);
    • 获取响应流,该响应流执行特定的浏览器客户端(这个响应流不需要程序员手动关闭,Tomcat服务器管理。)
    1. PrintWriter out  = response.getWriter();
    • 打印
    1. out.print(); 或者out.println();  ,后者是将HTML源代码换行,如果希望网页中换行,需要使用<br>

    13、webapp的固定目录如下所示:

     welcome.html

    <html>
        <head>
            <title>welcome page</title>
        </head>
    
        <body>
            <a href="http://localhost:8080/FirstServletWebApp/ldp">HelloServlet</a>
        </body>
    </html>

    HelloServlet.java

    import javax.servlet.Servlet;
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    
    import java.io.IOException;
    
    public class HelloServlet implements Servlet
    {
        public void init(ServletConfig config) throws ServletException{
        
        }
    
        public void service(ServletRequest request,ServletResponse response) 
            throws IOException,ServletException{
            //输出到Tomcat服务器控制台
            System.out.println("Hello World!");
        }
        
        public void destroy(){
        
        }
    
        public String getServletInfo(){
            return null;
        }
    
        public ServletConfig getServletConfig(){
            return null;
        }
    
    }

     

    转载请注明出处:https://www.cnblogs.com/stu-jyj3621
  • 相关阅读:
    C语言结构体+公用体+枚举训练
    TIFF图像文件格式详解
    Professional CUDA C Programming的代码实例1.1
    C语言数组强化训练
    C语言字符数组与字符串
    文件操作
    MATLAB 与Modelsim之间对测试系统的联合仿真
    FFT实现逆FFT
    眼图——概念与测量(摘记)
    《我的心曾悲伤七次》卡里·纪伯伦
  • 原文地址:https://www.cnblogs.com/stu-jyj3621/p/14351535.html
Copyright © 2020-2023  润新知