构建Servlet项目流程

2023-12-13 13:05:48

第一步:创建maven项目

部分基础

依赖的模板基础部分如下

maven-archetype-quickstart: 这是最基本的Archetype,它创建一个包含简单Java类和单元测试的项目。

maven-archetype-webapp: 这个Archetype创建一个简单的Java web应用,包括一个servlet和一个JSP,以及相关的Web配置。

maven-archetype-j2ee-simple: 这个Archetype创建一个简单的J2EE应用,包含一个EJB模块和一个Web模块。

maven-archetype-simple: 这个Archetype创建一个非常简单的Maven项目,不包含任何特定的代码或者目录结构。

maven-archetype-mojo: 这个Archetype创建一个Maven插件项目。

spring-boot-archetype: 这是Spring Boot项目的官方Archetype,创建一个Spring Boot应用。

jersey-quickstart-webapp: 这是Jersey框架的官方Archetype,创建一个RESTful Web服务。

appengine-standard-archetype: 这是Google App Engine的官方Archetype,创建一个可以部署到Google App Engine的应用。

初始化构建完成

第二部:导入依赖

maven项目完成后就需要导入servletAPI的依赖包

在servletAPI的依赖包要与tomcat适配,下面是相关的匹配表

我用的Tomcat8.5 所以使用Servlet 3.1.0的开发包

(原来的位置)

<dependency>
    <groupId>javax.servlet</groupId> 
    <artifactId>servlet-api</artifactId> 
    <version>3.1.0</version> 
</dependency>

新的位置

<!-- https://mvnrepository.com/artifact/jakarta.servlet/jakarta.servlet-api --> <dependency> 
    <groupId>jakarta.servlet</groupId> 
    <artifactId>jakarta.servlet-api</artifactId> 
    <version>4.0.4</version> 
    <scope>provided</scope>
</dependency>

第三步创建webapp目录

maven框架就这些东西,如果需要网页的话,还要添加web(选择了webapp的模板跳过第三步)

如果不想放在这个位置就自己添加

手动按照这个层次添加

完成之后将内容加入web.xml中(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中创建类实现的。

①各方面注意事项:

在网络程序中,就涉及到一对相当重要的概念

请求:request

响应:response

这些参数都是会自动将http请求解析成对象HttpServletRequest等对象(不是我们传递的 )

doGet(doPost)方法要做的工作,就是根据请求,计算生成响应。

②一个服务器的工作流程,可以分为三个典型的步骤:

(1)接收请求并解析

(2)根据请求计算响应

(3)构造响应数据,并返回给客户端

getWriter()方法获取一个可以写入数据的对象

write()方法则是使用这个对象来实际写入数据。

这里面,(1)(3)这两步,Tomcat已经帮我们做好了。因此我们只需要实现(2),也就是doGet要实现的内容。

代码如下

@WebServlet("/load")
public class TestServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        /**
         * req的方法不只有这些。只要http协议的东西都可以获取包括(session)
         */
        String host= req.getRemoteHost();
        System.out.println("请求的主机地址:"+host);
        String method = req.getMethod();
        System.out.println("客户端请求方式:"+method);
        /**
         * resp 的方法也有很多,主要是返回给前端的响应
         */
        PrintWriter pw= resp.getWriter();
        pw.write("我是响应蛋");


    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        //一般doGet和doPost的处理的事务逻辑是差不多的,就可以这样写
        doGet(req, resp);
    }
}

接受到了。页面这是乱码了,乱码问题可以去我的另一篇文章

到这,项目就算是跑通了。可以正常开发了

打包

改成war包 ,clear原来的项目,重新打包package

把打包文件放在tomcat的webapp目录下

打包文件上传到tomcat,如果tomcat正在运行,他会自动生成一个如下蓝色字体的文件,可能也不会,就自己重启一下。

检验: 可以访问到?乱码问题,在另一篇文章中,集中解决

文章来源:https://blog.csdn.net/m0_62645012/article/details/134897492
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。