使用Maven实现第一个Servlet程序 |
您所在的位置:网站首页 › Servlet程序的入口方法 › 使用Maven实现第一个Servlet程序 |
目录 前言: Maven 什么是Maven 创建Maven项目 Mevan目录介绍 Servlet程序 引入Servlet依赖 创建目录结构 编写代码 打包程序 部署程序 验证程序 idea集成Tomcat 下载Tomcat插件 配置Tomcat的路径 Smart Tomcat工作原理 小结: 前言:第一个Servlet程序实现客户端发起请求,服务端返回hello world。使用Maven进行项目管理,引入依赖,打包程序,目录管理等一些操作。 Maven 什么是MavenMaven是一个项目管理工具,能更好的帮助我们进行开发。它可以规范目录结构,管理依赖(使用第三方库),构建,打包项目,测试等等一些功能。 创建Maven项目选中这里的Maven点击Create按钮就可以创建Maven管理的项目了。 如果第一次使用需要下载一些插件,由于默认服务器是国外的,下载的速度可能有点慢。如果实在太慢尝试更换下网络,或者使用国内镜像的阿里云服务器也可以。 当下载完成后,右侧就会出现一个Maven的按钮,点击之后就可以看到这个页面。有一些插件和Maven提供的项目管理程序。 Mevan目录介绍Maven项目创建完成后,这些目录就会自动创建。main目录中放业务代码。java目录中放java代码。resources目录中放程序依赖文件。test目录下放测试代码。pom.xml文件是Maven项目总的配置文件。 Servlet程序 引入Servlet依赖在Maven仓库中进行下载,之前使用的是Tomcat8这里对应的Servlet是3.1.0版本。 Maven Repository: Search/Browse/Explore (mvnrepository.com) 由于我们使用了Maven进行项目管理,它可以帮助我们下载依赖程序。 复制这段代码到pom.xml文件中。创建个dependencies标签,是project标签的子标签。将这段代码放入其中。 当这段代码复制到pom.xml文件中,Maven就会自动下载相应的依赖文件。也可能由于网络问题下载较慢,同样尝试换下网络。 创建目录结构按照这样的位置创建这些目录和文件(名字也需要相同)。Maven在打包项目的时候就会寻找这些指定位置的目录结构。 我们写的第一个Servlet程序是没有main方法的,那么它是怎么跑起来的? 注意这里有和个web.xml,它就是声明了Tomcat服务器程序在运行时需要加载这个项目中的一些文件。这里就是使用了Tomcat为我们提供的接口Servlet,具体的执行由Tomcat完成。 web.xml中代码 Archetype Created Web Application 编写代码在java目录中编写代码。通常都需要继承HttpServlet这个类(Servlet为我们提供的)。 重写doGet方法。参数会有(HttpServletRequest req,HttpServletResponse resp)两个参数。Tomcat服务器接收到GET或者POST请求时就会调用这里对应的方法。 req:TCP读到请求时,Tomcat会根据这个请求构造req对象。 resp:这个为空对象(需要我们去构造)。doGet方法就是根据请求计算响应。 我们目的是打印hello world,这里就不用管req中的属性了,直接构造resp这个参数。我们往参数中的body属性写入字符串,当这个对象构造完成时,Tomcat会进行网卡写入。 写注解 @WebServlet("/hello") 注解就是针对一个类/方法,进行额外的解释说明,赋予额外的含义。 这里注解的含义就是为了把当前的类和路径关联起来。url中的路径,通过这个注解就可以确定服务器中具体的哪个类,就可以执行相应的代码。 // 把当前的类和HTTP请求的路径关联起来 // 根据url中的路径,通过这个注解,就可以确定调用服务器中的哪个类 // 路径和servlet是一一对应关系 @WebServlet("/hello") public class HelloServlet extends HttpServlet { // 这里的doGet方法不需要自己手动调用,交给tomcat调用、 // tomcat收到get请求,就会触发doGet方法,tomcat会构造好两个参数req和resp // resp:空对象(输出型参数) // req:TCP Socket中读出来的字符串,按照HTTP协议解析,得到的对象 // doGet做的工作就是根据请求构造响应 @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //req:tomcat针对请求,已经解析构造好了 //服务端控制台打印 System.out.println("hello world"); //构造resp对象,写回到客户端 //写入resp中的body。当整个对象构造好,最终由tomcat写入网卡,发送至客户端 resp.getWriter().write("hello world"); } } 打包程序Maven默认打jar包。但是Tomcat中的webapp需要war包。jar包就是普通的java程序,war包是Tomcat部署webapp使用的压缩文件,可以包含一些前端代码。 修改pom.xml文件,指定需要打什么包,并且指定打包后的文件名。代码段为project标签的子标签。 war hello_servlet点击右侧的Maven按钮,双击运行package程序,Maven就会帮助我们打包好文件。项目中会出现一个target目录,war包就在其中。 部署程序将这个war包直接拷贝到Tomcat的webapps目录中即可。当服务器启动时就会自动解压缩。 验证程序首先启动Tomcat服务器,然后浏览器中输入url:http://127.0.0.1:8080/hello_servlet/hello 。Tomcat端口默认为8080端口。 注意这里的两级路径。第一级是webapps目录下的war包文件名。第二级路径是我们之前写的注解。请求就会根据这两级路径找到服务器中具体的类。 idea集成Tomcat 下载Tomcat插件搜索Tomcat,下载Smart Tomcat插件即可。下载完成后需要配置Tomcat的路径。idea专业版直接集成了Tomcat Server插件,不过没有这个好用。 配置Tomcat的路径当下载好Smart Tomcat插件后,左侧就会出现Smart Tomcat按钮,点击配置即可。 配置完成后的效果。点击三角形即可运行Tomcat服务器。 当看见绿色框中的提示, Smart Tomcat就启动成功了,不过这个不能访问Tomcat的欢迎页面。 Smart Tomcat工作原理Tomcat支持启动的时候显示指定一个特定的 webapp 目录。相当于是让Tomcat加载单个webapp运行。idea直接调用Tomcat,让Tomcat加载当前项目中的目录。这里没有打包的过程,也没有拷贝和解压缩的过程。 这两种部署,其实是两种Tomcat运行方式,对于context path的定位不同。如果是直接拷贝war包的方式部署,context path就是war包名。如果是Smart Tomcat方式部署,这里的context path是可以配置的,默认是项目名(前面配置Tomcat路径时,不用修改的部分就存在)。 小结:这里的操作需要大量的动手实践。当出现错误,我们根据http响应的状态码来定位错误,并且修改bug。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |