zoukankan      html  css  js  c++  java
  • 2018.3.29学习总结之如何运行一个最简单的Servlet程序

    1,我编写了我的第一个Servlet程序。HelloServlet 继承自HttpServlet。因此需要导入javax.servlet开头的一系列包,那么这些包来自哪里呢?答案是Tomcat安装目录下的servlet-api.jar。

     1 package org.lxh.servletdemo;
     2 import java.io.IOException;
     3 import java.io.PrintWriter;
     4 
     5 import javax.servlet.ServletException;
     6 import javax.servlet.http.HttpServlet;
     7 import javax.servlet.http.HttpServletRequest;
     8 import javax.servlet.http.HttpServletResponse;
     9 
    10 public class HelloServlet extends HttpServlet {
    11 
    12     @Override
    13     public void doGet(HttpServletRequest req, HttpServletResponse resp)
    14             throws ServletException, IOException
    15         {
    16             PrintWriter out=resp.getWriter();
    17             out.println("<html>");
    18             out.println("<head><title>MLDNJAVA</title></head>");
    19             out.println("<body>");
    20             out.println("<h1>HELLO WORLD</h1>");
    21             out.println("</body>");
    22             out.println("</html>");
    23             out.close();
    24         }
    25 
    26 }

    那么如何在Eclipse中导入外部jar包呢?请参考百度经验:

    https://jingyan.baidu.com/article/ca41422fc76c4a1eae99ed9f.html

    2,好了,到这里,这个程序没有“红线”错误了,我需要编译一下它。我采用的方式是命令行javac命令的方式。到这里我遇到了两个问题:

    1>.如何对带有包名的类以javac命令的方式编译?

    2>.如何设置classpath才能找到servlet-api.jar(其实是找到HelloServlet 继承的父类HttpServlet,如果classpath没设置好,那么总是会报"找不到HttpServlet")

    对于第一个问题,作为一个初学者,我也折腾了很长时间,最终看了网上的经验分享,才搞定:

    以下参考自链接:https://www.cnblogs.com/terminator-LLH/p/5709062.html

    一般初学者在学习java的时候都是不建包的,所以运行java文件的命令行语句也比较传统。

    cd the content of the java file

    javac target.java

    java target

    这样一个java文件就运行完了。

    那一个有包名的java文件应该如何运行呢?在网上百度一下自己试了下都不是很全面或者不怎么行的通,下面以corejava中的源码为例运行带包名的java文件

    1、带包名的java文件首先要在包下。

    例如:corejava中的MapTest位于包map下,那它必须在文件夹map下。 又如:package com.global.test 那它的目录就应该是三层结构comglobal est

    2、编译java文件

    javac mapMapTest.java 编译时需要文件的位置,所以包是以目录的形式出现的。

    3、运行.class文件

    java map.MapTest 或 java com.global.test.target 由于.class文件是java独有的,所以运行时应该也是要遵循java的包规范,这样写也就不奇怪了。

    值得注意的是无论是编译还是运行,cmd中的进入的目录都应该是map的上一级目录

    对于第二个问题,我是这样配的:

    我试过只配到lib目录下,但不知道为什么失败了,于是又精确到servlet-api.jar文件。

    3,我编译成功了,得到了HelloServlet.class文件。如何从浏览器运行这个servlet程序呢?

    首先,web.xml是要配的。大家不要复制粘贴,会又编码错误。要从D:Program Filesapache-tomcat-9.0.6conf里面复制一个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"
      metadata-complete="true">
    
        <description>
          Welcome to Tomcat
        </description>
        <display-name>Welcome to Tomcat</display-name>
        
        
        <welcome-file-list>
            <welcome-file>main.html</welcome-file>
            <welcome-file>main.htm</welcome-file>
            <welcome-file>main.jsp</welcome-file>
        </welcome-file-list>
        
        <servlet>
          <servlet-name>hello</servlet-name>
          <servlet-class>org.lxh.servletdemo.HelloServlet</servlet-class>
        </servlet>
        <servlet-mapping>
          <servlet-name>hello</servlet-name>
          <url-pattern>/helloServlet</url-pattern>
        </servlet-mapping>
    </web-app>

    这样配了<url-pattern>后可以通过/helloServlet路径找到对应的<servlet>节点,并找到<servlet-class>所指定的org.lxh.servletdemo.HelloServlet。

    修改完web.xml文件后,要重启服务器,新的配置才能起作用。

    注意,HelloServlet.class文件必须放在包名对应的目录下,这个地方我搞了很久才明白!

    然后D:Program Filesapache-tomcat-9.0.6conf下的server.xml里面要加上这句:

    <Context path="/mldn" docBase="D:mldnwebdemo"/>

    这个节点位于Server /Service/Engine/Host下面。好了到现在,在浏览器中输入:

    http://localhost:8080/mldn/helloServlet

    就能打开了:

  • 相关阅读:
    vc++6.0如何调试
    Visual C++单文档混合分割视图
    使用VC6.0实现窗口的任意分割张中庆
    用MFC创建通用窗体分割框架
    vc++6.0编译环境介绍(1、2)
    浅谈SDI单文档多视切换方法
    单文档多视图Formview切换源代码(此网还有许多其它多视图切换的源代码)
    VC单文档实现多视图的方法
    Visual C++(VC++6.0)编译器常用选项设置
    PowerTip of the DayRemoving Empty Things
  • 原文地址:https://www.cnblogs.com/summer1987/p/8675640.html
Copyright © 2011-2022 走看看