Servlet-Note

本文详细介绍了如何从头开始创建一个简单的Servlet,包括Maven项目的设置、依赖管理、HelloServlet的实现、映射配置及Tomcat部署。通过实践理解Servlet的工作原理和URL映射机制。

Servlet

1、Servlet简介

  • Servlet就是Sun公司动态开发web的一门技术
  • Sun在这些API中提供一个接口叫做: Servlet,如果想要开发一个Servlet程序,只需完成两个步骤:
    • 编写一个类,实现Servlet接口
    • 把开发好的Java类部署到web服务器上

把实现了Servlet接口的Java程序叫做Servlet

2、HelloServlet

Servlet接口有两个默认的实现类:HttpServlet,GenericServlet

1、构建一个Maven项目,删掉里面的src目录,以后就在这个项目里建立Moudle;这个空的工程就是Maven主工程;

2、导入servlet、jsp依赖到pom.xml:

​ 依赖下载网址:https://mvnrepository.com/

  • servlet依赖

    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
        <scope>provided</scope>
    </dependency>
    
  • jsp依赖

    <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>javax.servlet.jsp-api</artifactId>
        <version>2.3.3</version>
        <scope>provided</scope>
    </dependency>
    

3、关于Maven父子工程的理解:

父项目中会有

<modules>
    <module>servlet-01</module>
</modules>

子项目中会有

<parent>
    <artifactId>servlet-study</artifactId>
    <groupId>org.example</groupId>
    <version>1.0-SNAPSHOT</version>
</parent>

父项目中jar包的java子项目可以直接使用

son extends parent

4、Maven环境优化

​ 1.修改web.xml为最新的

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
         http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0"
         metadata-complete="true">
    
</web-app>

​ 2.将maven的结构搭建完整

5、编写一个Servlet程序

​ 1.编写一个普通类

​ 2.实现Servlet接口,这里直接继承HttpServlet

public class HelloServlet extends HttpServlet {
    //由于get和post只是请求实现的不同方式,可以相互调用,业务逻辑都一样
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        ServletInputStream inputStream = req.getInputStream();
//        ServletOutputStream outputStream = resp.getOutputStream();
        PrintWriter writer = resp.getWriter();//响应流

        writer.print("Hello,Servlet");
    }

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

6、编写Servlet的映射

​ 为什么需要映射:因为写的是Java程序,但是需要通过浏览器访问,而浏览器需要连接web服务器,所以需要在web服务中注册写的Servlet,还需要给他一个浏览器能够访问的路径

<!--注册Servlet-->
<servlet>
  <servlet-name>hello</servlet-name>
  <servlet-class>com.bai.servlet.HelloServlet</servlet-class>
</servlet>
<!--Servlet的请求路径-->
<servlet-mapping>
  <servlet-name>hello</servlet-name>
  <url-pattern>/hello</url-pattern>
</servlet-mapping>

7、配置Tomcat

​ 注意:配置项目发布的路径就可以了!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EI9FfIdL-1617178071118)(Servlet-Note.assets/image-20210331105529173.png)]

8、启动测试

3、Servlet原理

Servlet是由Web浏览器调用,web务器在收到浏览器请求之后:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pRlYTzU8-1617178071119)(Servlet-Note.assets/image-20210331110431363.png)]

4、Mapping

1.一个servlet可以指定一个映射路径

<servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>com.bai.servlet.HelloServlet</servlet-class>
</servlet>

2.一个servlet可以指定多个映射路径
以指定一个映射路径

<servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>com.bai.servlet.HelloServlet</servlet-class>
</servlet>

2.一个servlet可以指定多个映射路径

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd" version="6.0"> <display-name>wenote</display-name> <!-- 欢迎页面 --> <welcome-file-list> <welcome-file>index.jsp</welcome-file> <welcome-file>index.html</welcome-file> </welcome-file-list> <!-- Servlet配置 --> <servlet> <servlet-name>HomeController</servlet-name> <servlet-class>cn.edu.lyu.fxfx.wenote.controller.HomeController</servlet-class> </servlet> <servlet-mapping> <servlet-name>HomeController</servlet-name> <url-pattern>/home/*</url-pattern> </servlet-mapping> <servlet> <servlet-name>UserController</servlet-name> <servlet-class>cn.edu.lyu.fxfx.wenote.controller.UserController</servlet-class> </servlet> <servlet-mapping> <servlet-name>UserController</servlet-name> <url-pattern>/user/*</url-pattern> </servlet-mapping> <servlet> <servlet-name>NoteController</servlet-name> <servlet-class>cn.edu.lyu.fxfx.wenote.controller.NoteController</servlet-class> </servlet> <servlet-mapping> <servlet-name>NoteController</servlet-name> <url-pattern>/note/*</url-pattern> </servlet-mapping> <!-- 编码过滤器 --> <filter> <filter-name>EncodingFilter</filter-name> <filter-class>cn.edu.lyu.fxfx.wenote.filter.EncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>EncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 身份验证过滤器(修正后的映射) --> <filter> <filter-name>AuthFilter</filter-name> <filter-class>cn.edu.lyu.fxfx.wenote.filter.AuthFilter</filter-class> </filter> <filter-mapping> <filter-name>AuthFilter</filter-name> <url-pattern>/home/*</url-pattern> <url-pattern>/note/*</url-pattern> </filter-mapping> <!-- 错误页面 --> <error-page> <error-code>404</error-code> <location>/WEB-INF/error/404.jsp</location> </error-page> <error-page> <error-code>500</error-code> <location>/WEB-INF/error/500.jsp</location> </error-page> <error-page> <exception-type>java.lang.Exception</exception-type> <location>/WEB-INF/error/error.jsp</location> </error-page> <!-- 会话配置 --> <session-config> <session-timeout>30</session-timeout> <cookie-config> <http-only>true</http-only> <secure>false</secure> </cookie-config> </session-config> <!-- 上下文参数 --> <context-param> <param-name>uploadPath</param-name> <param-value>/upload</param-value> </context-param> <context-param> <param-name>appName</param-name> <param-value>个人笔记系统</param-value> </context-param> <!-- JSP配置 --> <jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <page-encoding>UTF-8</page-encoding> <default-content-type>text/html;charset=UTF-8</default-content-type> <trim-directive-whitespaces>true</trim-directive-whitespaces> </jsp-property-group> </jsp-config> </web-app> 怎么改
12-14
传送带损坏与对象检测数据集 一、基础信息 • 数据集名称:传送带损坏与对象检测数据集 • 图片数量: 训练集:645张图片 验证集:185张图片 测试集:92张图片 总计:922张工业监控图片 • 训练集:645张图片 • 验证集:185张图片 • 测试集:92张图片 • 总计:922张工业监控图片 • 分类类别: Hole(孔洞):传送带表面的孔洞损坏。 Human(人类):工作区域中的人类,用于安全监控。 Other Objects(其他对象):非预期对象,可能引起故障。 Puncture(刺穿):传送带被刺穿的损坏。 Roller(滚筒):传送带滚筒部件。 Tear(撕裂):传送带撕裂损坏。 impact damage(冲击损坏):由于冲击导致的损坏。 patch work(修补工作):已修补的区域。 • Hole(孔洞):传送带表面的孔洞损坏。 • Human(人类):工作区域中的人类,用于安全监控。 • Other Objects(其他对象):非预期对象,可能引起故障。 • Puncture(刺穿):传送带被刺穿的损坏。 • Roller(滚筒):传送带滚筒部件。 • Tear(撕裂):传送带撕裂损坏。 • impact damage(冲击损坏):由于冲击导致的损坏。 • patch work(修补工作):已修补的区域。 • 标注格式:YOLO格式,包含边界框和类别标签,适用于目标检测任务。 • 数据格式:图像数据来源于工业监控系统,适用于计算机视觉分析。 二、适用场景 • 工业自动化检测系统开发:用于构建自动检测传送带损坏和异物的AI模型,实现实时监控和预防性维护,减少停机时间。 • 安全监控应用:识别人类和其他对象,提升工业环境的安全性,避免事故和人员伤害。 • 学术研究与创新:支持计算机视觉在制造业、物流和自动化领域的应用研究,促进AI技术与工业实践的融合。 • 教育与培训:可用于培训AI模型或作为工业工程和自动化教育的案例数据,帮助学习者理解实际应用场景。 三、数据集优势 • 多样化的类别覆盖:包含8个关键类别,涵盖多种损坏类型和对象,确保模型能够处理各种实际工业场景,提升泛化能力。 • 精准的标注质量:采用YOLO格式,边界框标注准确,由专业标注人员完成,保证数据可靠性和模型训练效果。 • 强大的任务适配性:兼容主流深度学习框架(如YOLO、TensorFlow、PyTorch),可直接用于目标检测任务,并支持扩展至其他视觉任务需求。 • 突出的工业价值:专注于工业传送带系统的实际需求,帮助提升生产效率、降低维护成本,并增强工作场所安全,具有较高的实际应用价值。
一、基础信息 • 数据集名称:垃圾废弃物目标检测数据集 • 图片数量: 训练集:1124张图片 验证集:375张图片 总计:1499张图片 • 训练集:1124张图片 • 验证集:375张图片 • 总计:1499张图片 • 分类类别:包含60多个垃圾和废弃物类别,如气溶胶、铝泡罩包装、电池、破碎玻璃、卡片泡罩包装、香烟、透明塑料瓶、瓦楞纸箱、薯片袋、一次性食品容器、一次性塑料杯、饮料罐、饮料纸盒、鸡蛋盒、泡沫杯、泡沫食品容器、食品罐、食物垃圾、垃圾袋、玻璃瓶、玻璃杯、玻璃罐、杂志纸、餐盒、金属瓶盖、金属盖、普通纸、其他纸箱、其他塑料、其他塑料瓶、其他塑料容器、其他塑料杯、其他塑料包装、纸袋、纸杯、纸吸管、披萨盒、塑料瓶盖、塑料薄膜、塑料手套、塑料盖、塑料吸管、塑料餐具、聚丙烯袋、拉环、绳子、废金属、鞋子、一次性购物袋、六罐环、涂抹管、可挤压管、泡沫塑料片、纸巾、厕纸管、特百惠、未标记垃圾、包装纸等。 • 标注格式:YOLO格式,包含边界框和类别标签,适用于目标检测任务。 • 数据格式:图片来源于实际场景,细节清晰。 二、适用场景 • 垃圾自动分类系统开发:数据集支持目标检测任务,帮助构建能够自动识别和分类垃圾物品的AI模型,用于智能垃圾桶或回收系统,提升废弃物管理效率。 • 环保应用研发:集成至环保和废弃物管理应用,提供实时垃圾识别功能,促进回收和环境保护,支持可持续发展倡议。 • 学术研究与创新:支持计算机视觉与环保领域的交叉研究,助力发表垃圾识别和AI技术相关学术论文,推动技术创新。 • 教育与培训:可用于学校或培训机构,作为垃圾分类和AI目标检测教学的重要资源,培养环保意识和技术能力。 三、数据集优势 • 精准标注与多样性:每张图片经过准确标注,确保边界框定位精确;包含多种垃圾类别,覆盖常见废弃物,提升模型的泛化能力和鲁棒性。 • 任务适配性强:标注兼容主流深度学习框架(如YOLO等),可直接用于目标检测任务,并支持扩展到其他视觉任务,如分类或分割。 • 实际应用价值:专注于垃圾识别,为环保、废弃物管理和回收提供重要数据支撑,有助于减少污染和促进循环经济。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值