Servlet-HelloServlet

Servlet

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

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

HelloServlet

  • servlet有两个默认的实现类:HttpServlet,GenericServlet
  1. 构建一个普通的Maven项目,删掉里面的src目录,以后的学习可以在该项目里建立Model,这个空的工程,就是Maven的主工程

在这里插入图片描述

  1. 第一步,https://mvnrepository.com/中搜索要使用的依赖包
  2. 第二部,将搜索到的代码放入标签下
  3. 第三步,打开Maven仓库
  4. 第四步,下载依赖

新建项目

在这里插入图片描述

  1. 关于Maven父子工程的理解:

    子类下:

    <parent>
      <artifactId>javaweb-02-Servlet</artifactId>
      <groupId>org.example</groupId>
      <version>1.0-SNAPSHOT</version>
    </parent>
    

    父类下:

     <modules>
            <module>servlet01</module>
        </modules>
    

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

  2. Maven环境优化

    1. 修改子项目中webapp下WEB-INF文件下的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>
    
    
    1. 将Maven的结构搭建完整(main目录下建立java和resources)
  3. 编写一个Servlet程序

    1. 编写一个普通类
    2. 实现Servlet接口,这里继承HttpServlet
    3. 重写方法:
      在这里插入图片描述
    public class HelloServlet extends HttpServlet {
        //由于get或者post只是请求实现的不同方式,可以相互调用,业务逻辑都一样
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
           // 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);
        }
    }
    
    1. 编写Servlet的映射

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

              <!--注册servlet-->
              <servlet>
                <servlet-name>hello</servlet-name>
                <servlet-class>com.ch1.servlet.HelloServlet</servlet-class>
              </servlet>
              <!--servlet的映射路径-->
              <servlet-mapping>
                <servlet-name>hello</servlet-name>
                <url-pattern>/hello</url-pattern>
              </servlet-mapping>
        
      
    2. 配置Tomcat

在这里插入图片描述

  1. 启动测试
    在这里插入图片描述

Mapping

一个servlet可以映射一个映射路径

<servlet-mapping>
          <servlet-name>hello</servlet-name>
          <url-pattern>/hello</url-pattern>
        </servlet-mapping>
  • 可以访问localhost:8080/hello

一个servlet可以映射多个映射路径

		<servlet-mapping>
          <servlet-name>hello</servlet-name>
          <url-pattern>/hello</url-pattern>
        </servlet-mapping>

    	<servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello1</url-pattern>
    	</servlet-mapping>

    	<servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello2</url-pattern>
   	 	</servlet-mapping>

    	<servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello3</url-pattern>
    	</servlet-mapping>
  • 可以访问localhost:8080/hello
  • 可以访问localhost:8080/hello1
  • 可以访问localhost:8080/hello2
  • 可以访问localhost:8080/hello3

一个servlet可以映射通用映射路径

<servlet-mapping>
          <servlet-name>hello</servlet-name>
          <url-pattern>/hello/*</url-pattern>
        </servlet-mapping>
  • 可以访问localhost:8080/hello/随意字符输入

可以映射通用后缀映射路径

<servlet-mapping>
          <servlet-name>hello</servlet-name>
          <url-pattern>*.ch1</url-pattern>
        </servlet-mapping>

注意:*.ch1前不加/

  • 可以访问localhost:8080/随意字符输入.ch1

优先级问题

指定了的固有的映射路径优先级最高

如:

<servlet-mapping>
          <servlet-name>hello1</servlet-name>
          <url-pattern>/hello</url-pattern>
        </servlet-mapping>

<servlet-mapping>
          <servlet-name>hello2</servlet-name>
          <url-pattern>/*</url-pattern>
        </servlet-mapping>

登陆页面时,会先进入hello2的映射路径,因为其映射路径为通用路径,而在通用路径后输入/hello时,会进入到hello1的映射路径,找不到的路径则会进入到默认的映射路径(hello2)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值