javaweb-08:HelloServlet

6、Servlet

6.1、Servlet简介

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

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

6.2、HelloServlet

Servlet接口Sun公司有两个默认的实现类,HttpServlet,GenericServlet

1.构建一个普通的maven项目,删掉里面的src目录,以后我们的学习就在这个项目里面建立module。这个空的工程就是Maven主工程

2.关于Maven父子工程的理解

父项目会有

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

子项目会有

<parent>
        <artifactId>servlet-study</artifactId>
        <groupId>com.gongyi</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>

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

Son extends Father

3.maven环境优化

  • 修改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>
    
    
  • 将maven的结构搭建完整

4.编写一个Servlet程序

  • 编写一个普通类
  • 实现servlet接口,这里我们直接继承HttpServlet
public class HelloServlet extends HttpServlet {
    //由于get或者post只是请求实现的不同方式,可以相互调用,业务逻辑都一样
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("进入doGet方法");
        //ServletOutputStream outputStream = resp.getOutputStream();
        PrintWriter writer = resp.getWriter();//响应流
        writer.print("Hello Servlet!");
    }

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

5.编写Servlet的映射

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

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

6.配置tomcat

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

7.启动测试

彩蛋

1.笔记一定是从源码中分析出来的

2.idea删除一个module【不规范,可能会导致后续配置tomcat,无artifact】

1)先移除module

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vsgzeZnO-1632586094562)(C:\Users\Administrator\Desktop\学习笔记\javaweb\6、servlet.assets\image-20210925175928987.png)]

2)再右键有删除

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FpGmIueL-1632586094572)(C:\Users\Administrator\Desktop\学习笔记\javaweb\6、servlet.assets\image-20210925175957619.png)]

删除父pom中的modules

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r3I2akX0-1632586094576)(C:\Users\Administrator\Desktop\学习笔记\javaweb\6、servlet.assets\image-20210925180027336.png)]

3.看Servlet源码,画类结构图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1WlJ7gl4-1632586094580)(C:\Users\Administrator\Desktop\学习笔记\javaweb\6、servlet.assets\image-20210925234401737.png)]

4.IntelliJ IDEA部署tomcat时Edit Configuration Deployment无artifact选项

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vTuUbBm8-1632586094582)(C:\Users\Administrator\Desktop\学习笔记\javaweb\6、servlet.assets\image-20210925235220263.png)]

解决

5.IDEA artifacts Web Application:exploded没有from modules

解决

这一步解决后,就没有彩蛋4的问题了,其实说白了,还是这样创建的父子项目不太规范

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值