部署和测试


前提

在上一篇博文中,我们为我们的工程编写好了登录部分,然后构建得到了war包,本篇博文主要介绍如何将war包部署到服务器上,以及如何进行测试。


部署

将war包部署到服务器上之后,tomcat会对war包进行解包,生成一个同名的文件夹。部署需要进行以下的步骤:

  1. 将war包上传到服务器上:
  • 如果服务器上只部署一个Web程序,上传路径为:%TOMCAT_HOME%/webapps/,删除ROOT文件夹,将你的war包改名为ROOT.war
  • 如果服务器上要部署多个Web程序,上传了为%TOMCAT_HOME%/webapps/ROOT,无需改名
  1. 启动tomcat
    1)进入%TOMCAT_HOME%/bin:cd %TOMCAT_HOME%/bin
    2)启动tomcat:./startup.sh,看到Tomcat started就表示tomcat已经成功启动。
    在这里插入图片描述

  2. 我们看看tomcat解包的情况:
    1)进入%TOMCAT_HOME%/webapps:cd %TOMCAT_HOME%/webapps
    2)可以看到,我们的ROOT.war包已经解出ROOT文件夹了
    在这里插入图片描述

  3. 关闭tomcat:想关闭tomcat的时候,进入%TOMCAT_HOME%/bin,./shutdown.sh即可关闭。


测试

到这里,我们已经完成了war包的部署,可以通过浏览器发起请求来测试我们的后端程序了。

测试1——测试服务器上的文件是否可被外网访问

一般情况下,我们可能先测试一下服务器上的文件(用户上传的或者后台写入的)是否可以被外网访问到,以进一步测试文件下载等功能。我们把文件放在Tomcat的ROOT目录下,就可以用服务器域名+“/”+“文件名(带后缀)”直接访问到文件:

将目标文件放在ROOT目录中
我们就以下面这张名为“cat.jpg”的萌猫图片文件为例

测试文件

我们将这张图片上传到%TOMCAT_HOME%/webapps/ROOT下,启动Tomcat;之后打开浏览器,在地址栏里输入

http://服务器域名或ip/cat.jpg
如http://a.b.c.d:8080/cat.jpg

可以看见,服务器返回并打开了这张图片,这说明我们的文件是可以被外网访问到的。


测试2——用PC测Servlet是否可达

很多人不会自己测试服务器连接通不通,今天就补充一个简单的方法在这。
在创建了Servlet之后,可以先不急着写功能,用自动创建好的Servlet测试一下你的url是否可以到达你的Servlet。
比如,我创建了一个名为MyFirstWebApp的工程,里面有一个LoginServlet,里面会被自动写入这样一个函数:

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        try (PrintWriter out = response.getWriter()) {
            /* TODO output your page here. You may use following sample code. */
            out.println("<!DOCTYPE html>");
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet LoginServlet</title>");            
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Servlet LoginServlet at " + request.getContextPath() + "</h1>");
            out.println("</body>");
            out.println("</html>");
        }
    }

这个函数其实就是在网页上写点东西,doPost和doGet函数默认调用它,这些代码我们暂时不需要改动。

关键部分到了,测试你的URL,比如我的URL就是:

//注意分享一里提到的localhost和外网IP或域名的区别!
http://a.b.c.d:8080/MyFirstWebApp/LoginServlet

输入到浏览器的URL框,回车之后我们看到

LoginServlet

OK,现在你就可以在这个Servlet里面实现你的功能了。


测试3——拼Get请求用网页测试你的服务端

大家应该还记得,在《Java Web》那篇博文中,我说doGet方法这么写:

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
    doPost(request, response);
}

也就是doGet调用doPost来处理请求。那么我们就可以使用Get请求方式拼接字符串来发送请求,测试我们的服务端。

我们在测试完分享2的LoginServlet之后,实现了它的功能,即只有账号username=implepassword=123时才返回登录成功,否则返回登录失败。

重点来了,此时我们打开浏览器,拼接出以下URL:

http://a.b.c.d:8080/MyFirstWebApp/LoginServlet?username=imple&password=123

注意中间接参数列表的问号(?)和两个参数中间的分隔符与号(&)不能忘

此时点击回车,页面会发生跳转显示以下输出信息:
登录成功

看到这个输出信息表示登录成功,服务器一切正常。当然,看到failed也是正常结果,只是你记错了自己写定的账号密码罢了。

看到了其他的结果,就说明你的服务端有问题,根据不同的报错信息排查错误。


后记

写着写着,突然忘了还有什么要分享了,只有一条也是有些尴尬,但是没办法,等我想起来了再回来添上吧。

因为很多人不会测试服务器连接,今天添上了Servlet的请求测试。
——2018.03.11

客户端和服务端放在一起整体测试的时候,出了问题要判断问题出在哪会比较耗时,也不方便三言两语讲得清,因此今天添加了建立在分享2基础上的分享3。有了分享3,可以不先写服务端,不写客户端,把服务端测试正确了再写客户端,问题会少很多。

另外,大家也看到了,doGet方法极不安全,可以随意伪造请求。大家在测试完自己的Servlet之后,doGet方法里还是把调用doPost那一句删掉吧,也就是doGet方法留空,什么都不做。
——2018.05.05

评论 130
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IMplementist

你的鼓励,是我继续写文章的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值