servlet的入门使用

Servlet快速入门 Servlet 文章目录Servlet@[toc]Servlet快速入门Servlet执行流程Servlet生命周期Servlet方法介绍Servlet体系结构思考总结Servlet urlpattern配置urlPattern配置规则XML配置方式编写Servlet Servlet快速入门 1.创建Web项目,导入Servlet坐标 <dependencies> <dependency> <groupId>javax.serv 阅读详情

Servlet是什么

sun公司制订的一种用来扩展web服务器功能的组件规范。

  1. 扩展web服务器功能

注:
早期的web服务器只能处理静态资源的请求,即需要事先将html文件准备好,并存放到web服务器上面。不能够处理动态资源的请求(需要计算,动态生成html)。早期使用CGI(Common Gateway Interface)应用程序来扩展。CGI程序使用perl,c/c++等语言来编写,编写繁琐,不方便移值,性能也不是很好,现在用得很少了。浏览器将请求发送给web server,如果是动态资源的请求,web server会将请求转交给servlet容器来处理,由容器来处理网络相关的问题,由servlet处理业务逻辑

  1. 组件规范
    • 什么是组件?

      符合规范,实现部分功能,并且需要部署到相应的容器里面才能运行的软件模块。servlet就是一个组件,需要部署到servlet容器里面才能运行

    • 什么是容器

      符合规范,提供组件运行环境的程序。servlet容器为servlet提供运行环境

如何写一个Servlet

1. 使用eclipse创建maven的war项目,添加maven的jar依赖

maven的jar依赖如下:

<!-- 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>

2. 写一个java类,实现Servlet接口或者继承 HttpServlet抽象类。

注:建议继承HttpServlet抽象类
java类需要重写service方法

package web;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloServlet extends HttpServlet {
	public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		/*
		 * 读取请求参数值
		 * getParameter:依据请求参数名获得请求参数值
		 */
		String name=request.getParameter("name");
		/*
		 *返回content-type消息头,高速浏览器,服务器返回的数据类型。
		 *另外,out在输出时,会使用指定的字符集来编码
		 */
		response.setContentType("text/html;charset=UTF-8");
		//获得输出流
		PrintWriter out=response.getWriter();
		/*
		 *将数据写到response
		 *out在输出时,默认会使用iso-8859-1
		 */
		out.println("<h1>"+name+"</h1>");
		//关闭流
		out.close();
	}

}

3. 在当前项目的web.xml中添加servlet配置

  <servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>web.HelloServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>
    <url-pattern>/hello</url-pattern>
  </servlet-mapping>

4. 部署到tomcat容器

maven項目pom文件中添加tomcat插件

<!--添加tomcat插件 -->
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.tomcat.maven</groupId>
				<artifactId>tomcat7-maven-plugin</artifactId>
				<version>2.2</version>
				<configuration>
					<port>8087</port>
					<hostName>localhost</hostName>
					<uriEncoding>UTF-8</uriEncoding>
				</configuration>
			</plugin>
		</plugins>
	</build>

运行项目
在这里插入图片描述
在这里插入图片描述
运行成功
在这里插入图片描述

5. 访问servlet

http://localhost:8087/servlet/hello?name=sally
在这里插入图片描述

Servlet是如何运行的

在浏览器地址栏输入 http://ip:port/servlet/hello

  1. 浏览器依据ip,port建立连接(即与web服务器之间建立网络连接)
  2. 浏览器需要将相关数据打包

(即按照http协议要求,制作一个请求数据包,包含了一些数据,比如请求资源路径),并且将请求数据包发送出去

  1. web服务器会将请求数据包中数据解析出来,并且将这些数据添加到request对象,同时,还会创建一个response对象
  2. web服务器创建Servlet对象,然后调用该对象的service方法.(会将request和response作为参数)

在service方法里面,通过使用request获得请求相关的数据。比如请求参数值,然后将处理结果写到response

  1. web服务器将response中的数据取出来,制作响应数据包,然后发送给浏览器
  2. 浏览器解析响应数据包,然后展现
    在这里插入图片描述

常见的错误

500

500是状态码,表示系统错误
1)产生的原因:
a.web.xml文件配置错误。
比如将类名写错。
b.源代码写错。
比如,没有继承HttpServlet。

404

404是状态码,表示依据请求路径找不到对应的资源
1)产生的原因
a.没有部署应用
b.访问地址写错

405

注:405是状态码,表示找不到处理方法。
1)产生的原因
a.service方法签名错误(方法名,参数类型,异常类型,返回类型写错)

http协议

什么是http协议

是一种网络应用层协议,规定了浏览器与web服务器之间如何通信以及数据包的结构
1)如何通信?
step1. 先建立连接。
step2. 发送请求数据包。
step3. 发送响应数据包。
step4. 关闭连接。
即 一次请求,一次连接
在这里插入图片描述
优点
web服务器可以利用有限的连接为尽可能多的客户请求服务

两种数据包的结构

1)请求数据包
a.请求行 (请求类型 请求资源路径 协议和版本)
b.若干消息头
注:消息头是一些键值对(键和值之间使用": "分隔),
浏览器和服务器之间可以利用消息头传递一些特殊的信息。
比如,浏览器可以发送"user-agent"告诉服务器,浏览器
的类型和版本。
c.实体内容
如果请求类型是get,实体内容为空。
2)响应数据包
a.状态行 (协议和版本 状态码 状态描述)
注:状态码是一个三位数字,表示服务器处理请求的状态。
b.消息头
服务器同样也可以将一些消息头发送给浏览器。比如
可以通过设置content-type消息头,告诉浏览器,服务器
返回的数据类型。
c.实体内容
程序处理的结果。浏览器会解析实体内容中的数据,然后
展现。

两种请求类型

get请求

a.哪一些情况下,浏览器会发送get请求?
a1.直接输入某个地址
a2.点击链接
a3.表单默认提交方式
b.特点
b1.会将请求参数放到请求行里面,只能提交少量的数据。
注:因为请求行大约只能存放2k左右的数据。
b2.会将请求参数显示在浏览器地址栏,不安全。
注:比如有些网络设备(路由器)会记录这些地址。

Servlet输出中文

package web;

import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class DateServlet extends HttpServlet{
	public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//获取当前系统日期
		Date date=new Date();
		SimpleDateFormat sdf=new SimpleDateFormat("yyy-MM-dd");
		String toDate=sdf.format(date);
		PrintWriter out=response.getWriter();
		out.println("今天是:"+toDate);
		out.close();
		
	}
}

web.xml配置servlet

<servlet>
		<servlet-name>DateServlet</servlet-name>
		<servlet-class>web.DateServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>DateServlet</servlet-name>
		<url-pattern>/date</url-pattern>
	</servlet-mapping>

访问页面中文乱码
在这里插入图片描述

乱码原因
out在输出时,默认使用iso-8859-1来编码。

解决
在DateServlet中的service方法下第一行添加如下代码:

/*
	 *  作用1.返回content-type消息头,告诉浏览器,服务器返回的数据类型。
	 *  作用2:另外,out在输出时,会使用指定的字符集来编码
*/
response.setContentType("text/html;charset=utf-8");

修改后servlet所在的类的代码

package web;

import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class DateServlet extends HttpServlet{
	public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		//获取当前系统日期
		Date date=new Date();
		SimpleDateFormat sdf=new SimpleDateFormat("yyy-MM-dd");
		String toDate=sdf.format(date);
		PrintWriter out=response.getWriter();
		out.println("今天是:"+toDate);
		out.close();
		
	}
}

重新访问
在这里插入图片描述

unit07-Servlet Servlet概述 什么是Servlet? Servlet是由SUN公司提供的一门动态Web资源开发技术 静态Web资源:不同的人,在不同的条件下访问后看到的是相同的效果,这样的资源叫做静态Web资源(html、css、js等) 动态Web资源:在不同的访问条件下看到的是不同的效果,这样的资源叫做动态Web资源 (Servlet、jsp、.NET、PHP等) Servlet本质上是一段Java程序,和之前的Java程序不同的是,Servlet程序无法独立运行,需要将Servlet程序放在服务... 阅读详情

相关推荐

Servlet从入门到精通

文章目录一,Servlet--1,概述--2,准备工作在IDEA里创建一个web工程整理web工程目录结构修改资源输出位置修改jar包存放位置配置Tomcat服务器--3,入门案例思路创建Servlet程序配置web.xml文件测试--4,Servlet的继承结构标题 一,Servlet –1,概述 Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成 动态

cgblpx的博客 1万+

Servlet 简介及方法介绍

JavaSE java标准版本,Sun公司为java成员员提供的一套基础类库。这套类库主要包括,基本语法、异常、IO、集合、反射、线程等。 JavaEE java企业版,Sun公司为java程序员准备的另一套庞大的类库,帮助程序员完成企业级项目开发。(高效、稳定) Servlet 是JavaEE13大子规范中的一个规范(接口:解耦合、可插拔),主要功能在于交互式的浏览和生成数据。 交互: 1、入口(URL) http://localhost:8080/chengcheng/hello 2、配置文件(web

chengyu0726的博客 368

Spark数据倾斜问题+解决方案

1、数据倾斜 数据倾斜指的是,并行处理的数据集中,某一部分(如Spark或Kafka的一个Partition)的数据显著多于 其它部分,从而使得该部分的处理速度成为整个数据集处理的瓶颈 数据倾斜俩大直接致命后果 1)数据倾斜直接会导致一种情况:Out Of Memory 2)运行速度慢 主要是发生在Shuffle阶段。同样Key的数据条数太多了。导致了某个key(下图中的80亿条)所在的Task数 据量太大了。远远超过其他Task所处理的数据量 一个经验结论是:一般情况下,OOM的原因都是数据倾斜 2、如

诸葛搏毅 6769

Java中Servlet的使用(一)——Hello Servlet

servlet 最近开始了软工实验,要做一个轻量级的全栈项目,所以最近开始实践后端servlet 是什么 servlet是个容器,这是学习之后自己的理解。为什么说它是个容器呢? 你可以把服务器看作一个大容器,这些服务器里面有好多容器,容器里面又嵌套容器,里面有一层便是servlet,所以说它是个容器。servlet 的使用 servlet 怎么使用呢?你看,在web前端,有po

Scarborough_Coral的博客 1062

Proteus+汇编+8086电子时钟实战:从框架搭建到中断驱动的核心实现

本文详细介绍了使用Proteus仿真软件和8086汇编语言实现电子时钟的完整过程。从程序框架搭建、内存分段模型理解,到核心的8259中断控制器配置与编程,再到中断服务程序编写和数码管动态扫描显示驱动,系统阐述了底层软硬件协同开发的核心原理与实战步骤。该项目是深入理解计算机中断机制和汇编语言编程的绝佳实践。

weixin_29189381的博客 413

Pointnet++改进91:2025最新改进模块-RepMBConv模块

本文提出了一种改进PointNet++网络的方法,通过在特征提取模块中引入RepMBConv结构来提升模型性能。主要内容包括:1)理论部分介绍了RepMBConv的设计原理,包含自监督学习框架、动态上下文建模等创新点;2)详细给出了三步修改步骤:创建包含RepMBConv的Python模块、在pointnet2_utils.py中添加注意力机制、修改pointnet2_sem_seg.py主网络结构;3)代码实现展示了如何将RepMBConv集成到PointNetSetAbstraction模块中,形成Po

AIcurator的博客 274

Servlet入门

Servlet 是运行在Web服务器中的小型java程序,是Java提供的一门动态web资源开发技术。通常通过HTTP协议接收和响应来自于客户端的请求。Servlet 是JavaEE规范之一,其实就是一个接口(定义Servlet需实现Servlet接口或继承HttpServlet),并由web服务器运行Servlet。

weixin_75199610的博客 1801

携程滑块、点选验证码登录识别逆向

本文分析了携程登录系统的风控机制,主要包含三种验证场景:无验证码、滑块验证码和二次图标点选验证码。通过跟踪risk_inspect风控接口,发现验证流程采用标准AES加密,需提交设备指纹等加密信息。当触发验证码时,需额外提交包含轨迹坐标的verify_msg参数及token/rid参数。最终通过风控检测后,需使用一致的指纹参数和验证token完成加密登录。文章强调所有分析仅用于学习,代码实现需确保符合法律规范。

码王吴彦祖的博客 1100

Servlet_快速入门

* 快速入门: 1. 创建JavaEE项目 2. 定义一个类,实现Servlet接口 * public class ServletDemo1 implements Servlet 3. 实现接口中的抽象方法 4. 配置Servlet 在web.xml中配置: <!--配置Servlet --> ...

Leon_Jinhai_Sun的博客 270

自动化测试与AI的结合应用

自动化测试,人工智能,机器学习,深度学习,测试用例生成,缺陷预测,测试优化 1. 背景介绍 在软件开发领域,自动化测试已成为不可或缺的一部分,它可以提高测试效率、降低测试成本,并确保软件质量。然而,传统的自动化测试方法往往依赖于人工编写的测试用例,这不仅耗时费力,而且难以应对复杂软件

AI架构师小马 2247

基于STM32+华为云IOT设计的云平台监控系统_102

本次设计结合现代生活的具体需求,设计出一套基于华为云IOT设计的云平台监控系统,可以远程实时查看家里光照强度、温湿度等信息,支持在云端控制家里的电器设备,实现远程控制。

7643

【Servlet】Servlet入门

概念:server applet,即:运行在服务器端的小程序Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则。将来我们定义一个类,实现Servlet接口,复写方法,tomcat就可以识别这个类,我们就称它为一个ServletServlet用大白话来说,就像是一个在Web服务器上运行的Java小程序,它专门用来处理来自浏览器或其他客户端的请求,并根据这些请求动态生成响应内容。

qq_39921135的博客 1477

做cellchat画图时自环的角度颠倒,如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 463

servlet快速入门

是Java语言编写的运行在tomcat上的程序,用来处理http请求servlet提供了一个接口(servlet),该接口规定了tomcat和servlet实例之间的契约,所以所有的servlet实例都必须实现该接口。

qq_46011557的博客 763

WorkBuddy 技能指南:基础办公与文档处理

WorkBuddy 不仅仅是一个对话工具——它通过技能(Skills)系统,将通用 AI 助手转变为具备专业领域能力的智能助手。每个技能都是一套经过精心设计的"能力包",包含专业知识、工作流程和专用工具。本文聚焦于文档处理类技能——这是日常工作中使用频率最高、最实用的能力集合。

u011186532的专栏 703

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Servlet简单入门

Servlet快速入门 一、什么是Servlet? servlet:server applet,运行在服务器端的小程序 * servlet就是一个接口,定义了Java类被浏览器访问到(Tomcat识别)的规则; * 将来我们自定义一个类,实现servlet接口,复写方法。 二、Servlet快速入门 01-- 创建JavaEE项目 02-- 实现一个类,实现Servlet接口 03-- 实现接口中...

weixin_44270855的博客 212

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【Servlet笔记】Servlet入门

Servlet:运行在服务器端的小程序Servlet是一个接口,定义了Java类被浏览器访问到(tomcat识别的规则)将来定义一个类,实现Servlet接口,复写方法快速入门:1、创建JavaEE项目选的时候改为Web项目应用程序2、定义一个类,实现Servlet接口3、实现接口中的抽象方法4、配置Servlet在web...

weixin_40763374的博客 109

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

JavaWeb-Servlet6 入门

通过以上步骤,我们就可以使用servelt6了。

卿着飞翔 1031

Servlet入门 Servlet生命周期 Servlet体系结构

Servlet (server applet) 是运行在服务端(tomcat)的Java小程序,是sun公司提供一套定义动态资源规范;从代码层面上来讲Servlet就是一个接口狭义的Servlet是指Java语言编写的一个接口。广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet作用:用来接收和处理客户端请求、响应给浏览器的动态资源。

2401_86102746的博客 1407

Servlet入门学习笔记-Servlet技术

Servlet入门教程,如何使用Servley搭建第一个程序

weixin_52937170的博客 1614
上一篇: jQuery对ajax的支持
下一篇: servlet提交表单
迷失的小鹿
博客等级 码龄8年 1万+粉丝 199原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值