第一步:创建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正在运行,他会自动生成一个如下蓝色字体的文件,可能也不会,就自己重启一下。
检验: 可以访问到 乱码问题,在另一篇文章中,集中解决