开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第9天,点击查看活动详
大家好,我是bug郭,一名双非科班的在校大学生。对C/JAVA、数据结构、Spring系列框架、Linux及MySql、算法等领域感兴趣,喜欢将所学知识写成博客记录下来。 希望该文章对你有所帮助!如果有错误请大佬们指正!共同学习交流
作者简介:
- CSDN java领域新星创作者blog.csdn.net/bug..
- 掘金LV3用户 juejin.cn/user/bug..
- 阿里云社区专家博主,星级博主,developer.aliyun.com/bug..
- 华为云云享专家 bbs.huaweicloud.com/bug..
Servlet项目
我们通对学习maven项目的创建已经对maven工具的使用有了一定的了解!
我们此时就可以步入今天的正题Servlet
Servlet这是HTTP给我们提供的API,用于java中构建HTTP请求和响应! 我们通过对Servlet的学习,就可以直接创建请求和响应,这是我们创建一个web项目的基础!
Servlet项目七步走
- 1.创建项目:
maven项目 - 2.引入依赖:把
servlet依赖引入 - 3.创建目录:
webapp/WEB-INF/web.xml - 4.编写
Servlet代码 - 5.打包
- 6.部署
- 7.验证程序
我们通过上面7步就可以创建一个Servlet项目!
刚刚我们已经解决了上面的第一步!
- 2.引入
Servlet依赖
- 4.创建目录
:wabapp/WEB-INF/web.xml
我们通过刚刚创建的目录不足以编写一个Servlet项目,所以我们需要在src/main下创建wabapp/WEB-INF/web.xml
为啥要这样创建呢?
嗯...规定! 我们来看看
Tomcat下的目录这里是多个
web项目存放在webapps所以这里要加上s而我们这里只是一个项目,所有用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>
将上面的内容复制到web.xml下即可!
- 5.编写
Servlet代码
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/Servlet")//ServletPath
public class ServletTest extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//req:请求,resp:响应,需要我们直接根据不同的请求编写响应代码!
resp.getWriter().write("hello world");
}
}
HttpServlet:我们通过继承Servlet给我提供的HttpServlet方法,才可以编写以个Servlet代码!这里只有我们正确引入依赖才能继承成功!
@webServlet("/Servlet")这里用于关联tomcat服务器下URL的路径,并确该Servlet对象所在位置,因为一个web项目中可能有很多一个网页,或者请求交换,通过这里的路径就可以确定请求或者页面位置!![]()
doGet:表示处理一个Get请求!这里是重写父类的方法,需要将调用父类中的该方法这一行注释掉!不注销掉,我们自己编写的方法就不生效!这里可以处理
Post等一些列请求!
req:(request)是Tomcat服务器接收到的请求,我们不需要处理,只需要根据请求作出响应的响应即可!
resp(response):我们只需要将响应写入该响应对象即可,其他操作由我们的tomact处理!
服务器工作流程: 1.接收并解析请求 2.根据请求,计算响应 3.构造响应数据返回给客户端 这里的1,3都由我们的
tomcat服务器完成,我们只需要完成第二步即可!
resp.getWriter().write("hello world");getWriter()方法返回一个Writer(字符流)对象,这里的Writer是直接往响应body中写,然后通过writer方法写数据!
- 6 打包部署
打包前我们先配置一些pom.xml文件!
因为我们默认打包是jar而我们需要打包成war!
<packaging>war</packaging> <!--打包类型 war-->
<build>
<finalName>Test</finalName> <!--指定打包成的war包名!-->
</build>
我们点击package就完成了打包!
我们在这个项目的路径下找到这个
war包!
然后部署到tomcat服务器上!
也就是复制到我们tomcat的webapps目录下即可,会主动帮我们解压缩!
- 验证
Content path:这里的Test/一级路径,就是我们的项目路径名(也就是我们打包的war名),定位我们的项目位置,因为服务器下可能有很多项目!Servlet path:这里的Servlet二级目录,就指定了该项目下的请求或者或者网页(html)位置!
我们可以看到我们的这个项目部署成功!这里的hello world正是我们返回给服务器的响应数据!
我们也能构造动态的页面,用于用户交换!
我们通过Fiddler抓包读取一下请求和响应!
请求:
这里是一个
Get请求,服务器的url为127.0.0.1:8080
响应:
这里的请求成功,响应状态码
200 ok!
body中的内容就是我们计算的响应数据!
smart tomcat
我们看到上面的打包部署在我们的服务器上的步骤比较繁琐! 我们能不能简化开发?
smart tomcat我们通过将smart tomcat插件扩展到idea下,将tomcat集成到idea! 就省去了打包部署的步骤,通过这个插件可以做到一键式打包部署! 其实就是帮我们把Servlet打包部署到我们本地的tomcat下!
smart tomcat安装
smart tomcat使用
-
将
smart tomcat插件添加到这个项目中! -
设置
Content Path就是我们项目的第一级路径,后面访问要路径一致! -
一键打包部署
可以看到报错了,这里就提示我们端口被占用,因为刚刚我们已经启动了
tomcat服务器,需要把刚刚那台服务器关了!
这就部署成功了!
- 验证