• 记一次Java代码的部署


    当出现下面的结果时,我的内心产生了许久没有的激动

    本篇主要是记述下我经历了什么。

    开篇

    要想将文件部署好,首先你得配置服务器的环境。安装JDK、Tomcat、配置环境(JAVA_HOME、CLASSPATH、PATH或者JAR_HOME(6.0以上才有))等先期准备,检查是否配置成功,Tomcat是否能启动:

    1、检查JAVA_HOME配置:set | grep JAVA

      添加JAVA_HOME:export JAVA_HOME=$(jdk解压出来的文件夹路径)

    2、检查PATH:echo $PATH

      添加 PATH export PATH= $JAVA_HOME/bin:$PATH

    3、检查CLASSPATH:set | more   然后在结果列表中找到classpath

      添加CLASSPATH export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH:你需要加载的jar文件路径

      路过一个坑就是,当使用文本编辑java文件时,javax.servlet这个框架一直找不到,不管你放在哪个文件夹中都无法使用javac编译该文件。这是因为jvm通过CLASSPATH无法找到该框架(这个jar包来自tomcat,只要是servlet容器,肯定都有这个包),所以需要设置该包的路径加到CLASSPATH中去。

    4、验证Tomcat是否成功启动:使用localhost:port(默认为8080)访问是否会出现Tomcat的主页,如果没有说明未启动成功

    弯路篇

    当所有的都准备好了,我就开始走上了坎坷之路......

    首先我想用Eclipse来部署我的代码:

    网上说法,需要新建一个动态的网页应用(其实是不需要的,任何一个项目都是OK的),然后就是配置tomcat本地服务器(详情参考其他篇)。在这会碰到很多问题,但主要的是就是自己的tomcat的文件配置,比如web.xml、server.xml。然后就是创建servlet了,我碰到一个问题就是没有导入javax.servlet包,找了半天才发现不是自带的,需要自己在servlet容器中找到对应的jar包导入到工程中,并添加构建路径。还出现个问题,就是访问localhost:8080的时候出现404,网上说是修改下tomcat的服务器的配置

    找到本地的服务器,双击

    找到红色框中的,查看是否是第二个选项,如果不是并且是灰色的那么就需要右击本地tomcat服务器,选择Properties

    然后就是启动tomcat。这种做法不适合新手去了解部署的原理,做完一整套的我还是感觉很懵,不知所云,根本不知道这是在干嘛,就是跟着流程走一遍,毫无意义。这个时候就不得不吐槽下百度了,千篇一律都是类似的文章、博客。无奈之下通过FQGoogle了一番,发现一篇不错的文章,提醒我去关注servlet本身的原理,然后就整了一套简单的流程。

    回归正道篇

    首先准备一个servlet-api.jar包,然后在CLASSPATH配置上包路径,也就是Eclipse中的addBuildPath,准备好java文件(我准备了一个SayHello.java):

     1 package com.junary.Servlet;
     2 
     3 import java.io.IOException;
     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 SayHello extends HttpServlet {
    11     
    12     private String message;
    13     
    14     @Override
    15     public void init() throws ServletException {
    16         message = "Hello, first Servlet!";
    17     }
    18     
    19     @Override
    20     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    21         resp.getWriter().println(message);
    22     }
    23 
    24 }

    然后使用javac编译(这里需要配置CLASSPATH路径,否则无法编译通过),产生class文件,将class文件放在Tomcat的解压包里(tomcat-8.5/webapps/ROOT/WEB-INF/classes) ,如果是标准的包,那就需要放在对应的文件夹下,比如:com.junary.Servlet,那么就需要放在classes/com/junary/Servlet文件夹中,具体路径为:/classes/com/junary/Servlet/SayHello.class。

    准备好后,就轮到配置了,这里不需要配置tomcat中conf下的server.xml文件,我们就直接配置web.xml文件,首先需要设置servlet和servlet-maping,我的配置如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app>      
        <servlet>
            <!-- 通过容器指定对应的类,需要带上包名 -->
            <servlet-name>SayHello</servlet-name>
            <servlet-class>com.junary.Servlet.SayHello</servlet-class>
        </servlet>
    
        <!-- 接口映射 -->
        <servlet-mapping>
            <!-- 将/hello映射到SayHello servlet容器中 -->
            <servlet-name>SayHello</servlet-name>
            <url-pattern>/hello</url-pattern>
        </servlet-mapping>
    </web-app>  

    至此就配置完了所有的项目,现在只剩下最后一步了,那就是启动tomcat,启动完了之后在浏览器中输入localhost:8080/hello就出现最开始的那张图片了。当然还有很多优秀的框架可以替代我们做这些繁琐的配置,但作为初学者,我觉得这样操作才能让我们明白原理,记忆更深刻。同事给我推荐了一篇关于配置的文章,里面介绍了三种配置方式,做完以上的事后,看这篇文章还是很好懂得。

    总结篇

    感慨下,搜索引擎对初学者来说真的很重要,很重要,好的搜索引擎能让我们少走很多弯路。

    回归正题

    1、在tomcat中如果我们要配置端口和域名那么我们需要去配置/修改server.xml文件。

    2、Java类需要编译成class文件部署在webapps下的web-inf文件夹中,如果还有其他的框架,那还需要新建一个lib文件夹,放置我们需要的jar包。

    3、配置web.xml文件,将接口映射到容器当中,由容器产生一个request,最后由Java程序返回response

    这篇就记我一次弯路,很多东西都是可以使用其他的框架去实现,比如Spring boot、maven,但需要理解原理,今后我会进一步的去了解这些框架,熟悉里面的设计思想。

    -------------更新 2018.04.10---------------------

    发现一篇更加简单明了的文章:Eclipse配置Tomcat,对Eclipse配置tomcat有个很好的介绍,需要注意的是通过@WebServlet()整的路径是要包含项目名称的,例如"@WebServlet("/hello")"则对应的路径为:localhost:8080/project_name/hello。"@WebServlet()"的效果相当于在web.xml文件中配置

    <servlet>
    <!-- 类名 -->
    <servlet-name>SayHello</servlet-name>
    <!-- 所在的包 -->
    <servlet-class>com.junary.Servlet.SayHello</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>SayHello</servlet-name>
    <!-- 访问的网址 -->
    <url-pattern>/project_name/hello</url-pattern>
    </servlet-mapping>
  • 相关阅读:
    使用SOCKET实现TCP/IP协议的通讯
    多线程和高并发的区别
    linq学习之join
    Winform 创建桌面快捷方式并开机启动
    引领5G行业化,广和通荣获“IoT创新大奖”
    全方面的了解超宽带信号高速采集记录回放系统
    浅谈智慧灯杆的通信网建设要求
    逆向工程,调试Hello World !程序(更新中)
    融合智能将成时代方舟?中科创达技术大会向未来答疑
    第十一届蓝桥杯赛后体会和经验分享
  • 原文地址:https://www.cnblogs.com/meilj/p/8778189.html
Copyright © 2020-2023  润新知