记一次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>

 

 

posted @ 2018-04-10 12:28  缇布  阅读(250)  评论(0编辑  收藏  举报