Servlet

Servlet简介

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

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

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

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

HelloServlet

Servlet接口在Sun公司有两个默认的实现类: HttpServlet, GenericServlet(HttpServlet继承自GenericServlet)

  1. 构建一个普通的Maven项目
  2. 删掉src里面的所有东西, 以后我们的学习就在这个项目里建立Module; 这个空的工程是Mavan的主工程
  3. 关于Maven父子工程的理解:
<modules>

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

son 

Maven环境优化

<?xml version="1.0" encoding="UTF-8"?>

编写一个Servlet程序

  1. 编写一个普通类
  2. 实现Setvlet接口, 我们直接继承HttpServlet
package 

编写Servlet的映射(web.xml)

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

<?xml version="1.0" encoding="UTF-8"?>

最后配置Tomcat, 注意配置项目发布的路径并启动测试即可

Servlet原理

Servlet是由Web容器调用, web容器(Tomcat)在收到浏览器请求后, 如果是第一次访问, 将生成Servlet的class, 速度相对较慢. 然后通过发送请求(包含请求头和请求体) 给Servlet后, Servlet会根据用户的代码逻辑和请求给出响应信息(响应头和响应体)并通过web容器响应给客户端(浏览器)

Mapping原理

  1. 一个Servlet可以指定一个映射路径
    <servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello</url-pattern>
    </servlet-mapping>
  2. 一个Servlet可以指定多个映射路径
    <servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello2</url-pattern>
    </servlet-mapping>
  3. 一个Servlet可以指定通用路径
    <servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello/*</url-pattern>
    </servlet-mapping>
  4. 默认请求路径
    <servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/*</url-pattern>
    </servlet-mapping>
  5. 指定前缀/后缀, 注意*前面不能加项目映射路径(只要以.do或者.peng结尾的就算有中间路径也可以用)
    <servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/*.do</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>*.peng</url-pattern>
    </servlet-mapping>
  6. 404页面(优先级问题: 指定了固有的映射路径优先级最高, 如果找不到就会走默认的处理请求)
    <!--404-->
    <servlet>
    <servlet-name>error</servlet-name>
    <servlet-class>com.peng.servlet.ErrorServlet</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>error</servlet-name>
    <url-pattern>/*</url-pattern>
    </servlet-mapping>

package com.peng.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class ErrorServlet extends HelloServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//以下两行等于 resp.setContentType("text/html; charset = utf-8");
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html");
PrintWriter writer = resp.getWriter();
writer.print("<h1>404<h1>");

}

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

maven servlet配置_Servlet入门相关推荐

  1. java servlet 配置_servlet与javabean配置

    servlet与javabean配置 (一):目录结构 tomcat的目录结构如下: 目录名 简介 bin 存放启动和关闭tomcat脚本 conf 包含不同的配置文件,server.xml(Tomc ...

  2. maven servlet配置_第一个Servlet配置

    使用IntelliJ IDEA创建一个Simple Maven项目 2. Add Framework Support 3. 配置Tomcat 打开菜单Run -> 选择Edit Configur ...

  3. IntelliJ IDEA 使用Maven工具 (新手入门简单操作,maven的下载,安装,配置)

    一.maven的概述 1.什么是maven   maven是一个项目管理工具,包含项目管理,插件以及目标的逻辑等.maven为我们提供了一系列的执行流程: maven执行流程 2.maven的下载安装 ...

  4. 项目jetty服务器,maven项目配置Jetty服务器

    org.mortbay.jetty jetty-maven-plugin 8.1.7.v20120910 5 /bfc-loms 8080 500000 主要在maven的pom.xml里增加如上配置 ...

  5. api报错 javaee maven_JavaEE关于Maven的配置与学习

    关于Maven的配置与学习 1. 简介 官方说法:Apache Maven is a software project management and comprehension tool. Based ...

  6. Maven如何配置阿里镜像及安装全步骤

    文章目录 配置阿里镜像 安装环境准备 maven安装步骤 配置中央仓库 在IDEA中配置Maven 创建一个maven的web项目 Maven中引入Tomcat服务器 写项目 总结 配置阿里镜像 具体 ...

  7. maven生成html单元测试报告,Maven中配置生成单元测试报告配置

    对junit单元测试的报告: 1.  ------------------------------------------------------- 2.   T E S T S 3.  ------ ...

  8. maven的配置流程

    为啥要学习maven? 相信读到这篇文章的许多人有过或多或少的项目经历,说到项目,在纯是原生态代码无框架的时候,我们最痛苦的一件事就是导入各种各样的jar包,jar包太多以至于我们很难管理,项目功能稍 ...

  9. Maven的配置(详细)

    Author:折木 Version:9.0.2 文章目录 一.引言 1.1 项目管理问题 1.1.1 繁琐 1.1.2 复杂 1.1.3 冗余 1.2 项目管理方案 二.介绍 三.Maven安装 3. ...

最新文章

  1. Safari回传值给应用程序
  2. 双边滤波JAVA代码实现
  3. 弱网环境测试-Charles学习
  4. pwnable.tw unexploitable 分析
  5. 新版征信报告实施之后,信用卡养卡套现真的要凉凉了?
  6. 物联网数据终端演进之道
  7. java float什么类型数据类型_Java中的Float和double数据类型
  8. Java LocalDate类| isSupported()方法与示例
  9. dart map 转list_Dart 集合类型List Set Map循环forEach map where any every
  10. MOSS关于Workflow
  11. Pytorch 的迁移学习的理解
  12. 面向对象之多态、多态性
  13. WQ7033开发指南(按键篇)之4.3 三轴加速度传感器SC7A20驱动导入按键流程详解
  14. android金钱符号变形,使用¥(一个中文字宽)还是¥(半个中文字宽)?
  15. HTML的游戏分数怎么设置,HTML5《拯救分号》游戏
  16. 有一个已经排好序的数组,输入一个数,将其插入到数组中,使得数组还是有序的。要求数组元素的值来自初始化
  17. 基于Azure Percept 避障乐高汽车
  18. 史莱姆区块查找 超简单java代码
  19. Ubuntu系列(一):给英特尔NUC重装 ubuntu18.04 的系统
  20. 如你所愿!一款高效率的学习神器,打开就是永久会员SVIP权限!

热门文章

  1. 似乎是发现了asp.net ajaxToolkit中TAB控件的一个BUG
  2. 少年,你知道怎么用一行代码解决分布式事务问题吗?
  3. 获取指定时间的当天时间范围工具类
  4. idea导入项目无法通过tomcat插件无法运行记录
  5. 2459: 爱你多少年呢
  6. 希沃展台如何使用_展商该如何做好展台设计?
  7. pythopn 函数(内置函数)
  8. tomcat处理图片或者文件不在项目里
  9. objective-c block 旧版详解
  10. iOS学习之NSBundle介绍和使用