idea怎么创建一个servlet 项目,idea怎么新建一个servlet

首页 > 机动车 > 作者:YD1662024-01-14 15:46:09

背景

相信做 java-web,用过 structs2 同学对于 Servlet 并不陌生。然而,目前大家做 java-web 都是用springmvc、springboot。spring 框架对servlet做了很好的封装,很好用,但是框架也让我们变成了只会用注解,对于 java-web 底层缺乏了解的,只专注业务逻辑的开发者。一旦有线上故障出现,就会很慌张。作为一名有志向的程序员,了解一些底层的知识是必备技能。

servlet概念

  servlet是sun公司提供的用于开发动态web资源的技术,是 j2ee 三大规范之一,servlet接口定义的是一套处理网络请求的规范,所有实现servlet的类,都需要实现它那五个方法。

  其中最主要的是两个生命周期方法 init()和destroy(),还有一个处理请求的service(),也就是说,所有实现servlet接口的类,或者说,所有想要处理网络请求的类,都需要回答这三个问题:

•你初始化时要做什么?•你销毁时要做什么?•你接受到请求时要做什么?

容器

1.servlet容器是什么?

  Servlet容器也叫做Servlet引擎,是Web服务器或应用程序服务器的一部分,用于在发送的请求和响应之上提供网络服务,解码基于 MIME的请求,格式化基于MIME的响应。

  Servlet没有main方法,不能独立运行,它必须被部署到Servlet容器中,由容器来实例化和调用 Servlet的方法(如doGet()和doPost()),Servlet容器在Servlet的生命周期内包容和管理Servlet。

1.http请求过程

idea怎么创建一个servlet 项目,idea怎么新建一个servlet(1)

参考知乎:智慧的文章,具体见参考

如上图所示,解析 http 请求的是 servlet 容器,容器将请求封装为 servlet 中的 HttpServletRequest 对象,调用 init(),service()等方法输出response,由容器包装为 httpResponse 返回给客户端的过程。

应用

一: 创建项目

1.idea 新建一个 servlet 项目

创建好的项目目录如下:

idea怎么创建一个servlet 项目,idea怎么新建一个servlet(2)

2.新增一个 servlet 类

新增一个实现 DisplayHeader 类继承 HttpServlet 抽象类,重写了 doGet 的方法,可以通过HttpServletRequest 取到请求数据,并进行处理。返回时将数据和html结合起来,写到 HttpServletResponse 类中进行返回。

代码示例如下:

import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.util.Enumeration; public class DisplayHeader extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html"); PrintWriter out = resp.getWriter(); String title = "HTTP Header 请求实例"; String docType = "<!doctype html public \"-//w3c//dtd html 4.0 " "transitional//en\">\n"; out.println(docType "<html>\n" "<head><title>" title "</title></head>\n" "<body bgcolor=\"#f0f0f0\">\n" "<h1 align=\"center\">" title "</h1>\n" "<table width=\"100%\" border=\"1\" align=\"center\">\n" "<tr bgcolor=\"#949494\">\n" "<th>Header 名称</th><th>Header 值</th>\n" "</tr>\n"); Enumeration headnames = req.getHeaderNames(); while (headnames.hasMoreElements()){ String paramName = (String) headnames.nextElement(); out.print("<tr><td>" paramName "<td>\n"); String paramValue = req.getHeader(paramName); out.println("<td>" paramValue "</td><tr>\n"); } out.println("</table>\n</body></html>"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req,resp); } }

3.servlet部署

默认情况下,Servlet 应用程序位于路径 /webapps/ROOT 下,且类文件放在 /webapps/ROOT/WEB-INF/classes 中。如果类名称 com.myorg.MyServlet,那么这个 Servlet 类必须位于 WEB-INF/classes/com/myorg/MyServlet.class 中。

并在位于 /webapps/ROOT/WEB-INF/ 的 web.xml 文件中创建以下配置:

<servlet> <servlet-name>DisplayHeader</servlet-name> <servlet-class>DisplayHeader</servlet-class> </servlet> <servlet-mapping> <servlet-name>DisplayHeader</servlet-name> <url-pattern>/DisplayHeader</url-pattern> </servlet-mapping>

在该项目中,配置好了,直接启动程序,访问http://localhost:8090/ServletTest/DisplayHeader则可以出现如下页面。

idea怎么创建一个servlet 项目,idea怎么新建一个servlet(3)

二: servlet 访问流程

浏览器地址栏中输入:http://localhost:8080/day06/hello

访问过程如下

idea怎么创建一个servlet 项目,idea怎么新建一个servlet(4)

servlet和springmvc的关系springmvc

  Springmvc的核心是一个DispatcherServlet,并且DispatcherServlet继承自 FrameworkServlet继承自HttpServletBean 继承自HttpServlet(也就是你说的servelt) 本质上是一样的东西。其实就是基于tomcat等这些web容器对我们的CS请求能做更多的事情,如校验,拦截(AOP思想),后期渲染等等,好让我们专注于业务的开发。

参考博客

1.将tomcat、servlet的关系讲的很清晰: https://blog.csdn.net/weixin_40396459/article/details/81706543

2. idea中创建一个servlet程序: https://www.cnblogs.com/liusong-funtime/p/9144275.html

3.https://zhuanlan.zhihu.com/p/295173834

4.https://blog.csdn.net/weixin_39893958/article/details/84389384

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.