JavaWeb从入门到实战学习笔记(二)

06 Servlet

Servlet接口在sun公司有两个默认的实现类:HttpServlet 、GenericServlet

6.1 Servlet简介

  • Servlet就是sun公司开发动态web的一门技术

  • sun在这些API中提供一个接口叫做:Servlet,如果你想开发一个Servlet程序,只需要完成两个小步骤:

    • 编写一个类,实现Servlet接口
    • 把开发好的java类部署到web服务器中

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

6.2 HelloServlet

1、构建一个普通的Maven项目,删掉里面的src目录,之后的Javaweb项目就在这个项目建立Module,这个空的工程就是Maven的主工程。在主工程的pom.xml文件中导入依赖,所有的子项目都适用。


        
        <dependency>
            <groupId>javax.servletgroupId>
            <artifactId>javax.servlet-apiartifactId>
            <version>4.0.1version>
            <scope>providedscope>
        dependency>

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

父项目中会有

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

子项目中会有

    <parent>
        <artifactId>javaweb-02-servletartifactId>
        <groupId>org.examplegroupId>
        <version>1.0-SNAPSHOTversion>
    parent>

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

son extends father

3、Maven环境优化

  • 修改web.xml为最新的

web.xml文件是用来配置:欢迎页、servlet、filter等的。当你的web工程没用到这些时,你可以不用web.xml文件来配置你的web工程。


<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">
web-app >
  • 将Maven的结构搭建完整(在main包中创建java和resources)

4、编写一个Servlet程序

  • 编写一个普通类(HelloServlet)
  • 实现Servlet接口,这里我们直接继承HttpServlet

5、编写Servlet的映射

为什么需要映射?

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


    <servlet>
        <servlet-name>helloservlet-name>
        <servlet-class>com.Lulu.servlet.HelloServletservlet-class>
    servlet>

    <servlet-mapping>
        <servlet-name>helloservlet-name>
        <url-pattern>/Luluurl-pattern>
    servlet-mapping>

6、配置Tomcat

配置项目发布的路径即可

JavaWeb从入门到实战学习笔记(二)_第1张图片

7、启动测试

出现堵塞,网页一直跳不出来

犯了一个低级错误,web.xml中Servlet的请求路径忘了一个“/”,这样就搜索不到页面,会一直堵塞啦!

JavaWeb从入门到实战学习笔记(二)_第2张图片
JavaWeb从入门到实战学习笔记(二)_第3张图片

成功测试的结果如下
JavaWeb从入门到实战学习笔记(二)_第4张图片

JavaWeb从入门到实战学习笔记(二)_第5张图片
JavaWeb从入门到实战学习笔记(二)_第6张图片

6.3 Servlet原理

Servlet是由Web服务器调用,web服务器在收到浏览器请求之后,会经历如下阶段:

JavaWeb从入门到实战学习笔记(二)_第7张图片

6.4 mapping问题

1、一个Servlet可以指定一个映射路径

 <servlet-mapping>
        <servlet-name>helloservlet-name>
        <url-pattern>/Luluurl-pattern>
    servlet-mapping>

2、一个Servlet可以指定多个映射路径

 <servlet-mapping>
        <servlet-name>helloservlet-name>
        <url-pattern>/Lulu1url-pattern>
    servlet-mapping>
 <servlet-mapping>
        <servlet-name>helloservlet-name>
        <url-pattern>/Lulu2url-pattern>
    servlet-mapping>
 <servlet-mapping>
        <servlet-name>helloservlet-name>
        <url-pattern>/Lulu3url-pattern>
    servlet-mapping>

3、一个Servlet可以指定通用映射路径

 <servlet-mapping>
        <servlet-name>helloservlet-name>
        <url-pattern>/Lulu/*url-pattern>
    servlet-mapping>

4、指定默认路径

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

5、指定一些后缀或者前缀等等…

<servlet-mapping>
        <servlet-name>helloservlet-name>
    
        <url-pattern>*.Luluurl-pattern>
    servlet-mapping>

6、优先级问题

指定了固有的映射路径,优先级最高,如果找不到就会走默认的请求(/*)

package com.Lulu.servlet;

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;

public class ErrorServlet extends HttpServlet {
    /*自定义404页面*/
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html");
        resp.setCharacterEncoding("utf-8");
        PrintWriter writer = resp.getWriter();
        writer.print("

404

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

    <servlet>
        <servlet-name>errorservlet-name>
        <servlet-class>com.Lulu.servlet.ErrorServletservlet-class>
    servlet>
    <servlet-mapping>
        <servlet-name>errorservlet-name>
        <url-pattern>/*url-pattern>
    servlet-mapping>

JavaWeb从入门到实战学习笔记(二)_第8张图片

JavaWeb从入门到实战学习笔记(二)_第9张图片

你可能感兴趣的:(java,maven,tomcat,servlet)