使用Maven实现第一个Servlet程序

目录

前言:

Maven

什么是Maven

创建Maven项目

Mevan目录介绍

Servlet程序

引入Servlet依赖

创建目录结构

编写代码

打包程序

部署程序

验证程序

 idea集成Tomcat

下载Tomcat插件

配置Tomcat的路径

Smart Tomcat工作原理

小结:


前言:

    第一个Servlet程序实现客户端发起请求,服务端返回hello world。使用Maven进行项目管理,引入依赖,打包程序,目录管理等一些操作。

Maven

什么是Maven

    Maven是一个项目管理工具,能更好的帮助我们进行开发。它可以规范目录结构,管理依赖(使用第三方库),构建,打包项目,测试等等一些功能。

创建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中代码

<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>Archetype Created Web Application</display-name>
</web-app>

编写代码

    在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标签的子标签。

<!-- 描述要打什么包  -->
<packaging>war</packaging>
<!--  声明打包后的名字  -->
<build>
    <finalName>hello_servlet</finalName>
</build>

     点击右侧的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。

  • 21
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 17
    评论
好的,这是一个比较复杂的问题,我会尽可能给出详细的解答和代码示例。首先,我需要确认一下您的问题意思,您是要求使用Spring Boot、Ajax和Maven实现一个图书信息搜索功能,不使用JSP和Servlet,同时还需要连接Robo3T,是吗? 如果是这样的话,那么您需要按照以下步骤进行操作: 1. 创建Spring Boot项目 您可以使用Eclipse或者其他Java IDE创建一个Spring Boot项目,具体步骤如下: - 在Eclipse中选择File -> New -> Other -> Spring Starter Project - 输入项目名称和描述,选择使用Maven进行构建,选择需要的依赖项,点击Finish即可创建一个空的Spring Boot项目 2. 添加依赖项 Spring Boot项目需要添加一些依赖项,包括Spring Boot Web、Spring Boot Data MongoDB、MongoDB Driver、Jackson-databind等,您可以在Maven的pom.xml文件中添加这些依赖项,具体代码如下: ``` <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3.12.7</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency> </dependencies> ``` 3. 创建MongoDB数据库和集合 在Robo3T中创建一个名为“library”的数据库,并在其中创建一个名为“books”的集合,用于存储图书信息。您可以使用以下代码创建集合: ``` db.createCollection("books") ``` 4. 创建实体类 在Spring Boot项目中创建一个名为“Book”的实体类,用于映射MongoDB中的“books”集合。具体代码如下: ``` @Document(collection = "books") public class Book { @Id private String id; private String title; private String author; private String publisher; private int publishYear; private String isbn; // getter和setter方法省略 } ``` 5. 创建数据访问层接口 在Spring Boot项目中创建一个名为“BookRepository”的接口,用于访问MongoDB中的“books”集合。具体代码如下: ``` @Repository public interface BookRepository extends MongoRepository<Book, String> { List<Book> findByTitleContainingIgnoreCase(String title); } ``` 6. 创建控制器 在Spring Boot项目中创建一个名为“BookController”的控制器,用于处理图书信息搜索的请求。具体代码如下: ``` @RestController @RequestMapping("/books") public class BookController { @Autowired private BookRepository bookRepository; @GetMapping("/search") public List<Book> searchBooks(@RequestParam("title") String title) { return bookRepository.findByTitleContainingIgnoreCase(title); } } ``` 7. 创建前端页面 在Spring Boot项目中创建一个名为“index.html”的静态页面,用于展示图书信息搜索的结果。具体代码如下: ``` <!DOCTYPE html> <html> <head> <title>图书信息搜索</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <script src="https://cdn.staticfile.org/jquery/1.12.4/jquery.min.js"></script> </head> <body> <h1>图书信息搜索</h1> <input type="text" id="title" placeholder="请输入图书名称"> <button id="searchBtn">搜索</button> <table id="table"> <thead> <tr> <th>图书名称</th> <th>作者</th> <th>出版社</th> <th>出版年份</th> <th>ISBN号</th> </tr> </thead> <tbody> </tbody> </table> <script> $(document).ready(function() { $("#searchBtn").click(function() { $.ajax({ url: "/books/search?title=" + $("#title").val(), type: "GET", success: function(data) { var table = $("#table tbody"); table.empty(); $.each(data, function(index, book) { var row = $("<tr>"); row.append($("<td>").text(book.title)); row.append($("<td>").text(book.author)); row.append($("<td>").text(book.publisher)); row.append($("<td>").text(book.publishYear)); row.append($("<td>").text(book.isbn)); table.append(row); }); }, error: function() { alert("搜索失败!"); } }); }); }); </script> </body> </html> ``` 8. 运行应用程序Eclipse中右键单击项目名称,选择“Run As” -> “Spring Boot App”即可运行应用程序。 这样,您就可以通过访问http://localhost:8080/index.html来打开图书信息搜索页面,输入图书名称后点击“搜索”按钮,就可以通过Ajax异步请求后端接口,获取并展示搜索结果了。 需要注意的是,以上代码示例中没有包含分页功能,如果您需要添加分页功能,可以参考Spring Data MongoDB官方文档,或者使用第三方分页插件,比如PageHelper等。
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小小太空人w

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值