Servlet基础知识

【Servlet学习笔记-1】使用Eclipse创建第一个Servlet并在html页面调用示例 说明:学习过程中参考了很多资料,但此文章主要在https://www.studytonight.com/servlet/creating-servlet-in-eclipse的基础上调整完成,如果侵权请联系我!Eclipse IDE is the most popular Java IDE used in the Industry. It is developed by an open sourc... 阅读详情

Servlet基础知识:

在eclipse使用dynamicWEBproject:

0.在eclipse 中部署Tomcat	
1.配置Servlet:(Eclipse环境)
2.建包和创建类,用于实现Servlet接口,重写一系列方法
3.配置
4.访问网页
5.简介HttpServlet,GenericServlet

0.在eclipse 中部署Tomcat

	Window/Preference/Server/Runtime Environment -> Add -> Apache Tomcat xx 
		-> next -> brower -> finish
	检测:
		建立Dynamic Web Project工程,再创建jsp文件,body中写入文本
	使用浏览器访问:
		http://localhost:8080/工程名称/xxx.jsp
	例如:
		http://localhost:8080/TryTom/NewFile.jsp
	如果正常访问,则部署成功

1.配置Servlet:(Eclipse环境)

0.建立Dynamic Web Project工程,
	建立的第三步选上:Generate web.xml deployment descriptor
	

1.此时实际工程结构:
	-ProjectName..
		-src
			-xxxPackages..
				-xxxClassName..
		-build
		-WebContent
			-META-INF
			-WEB-INF
				-lib
			   (-web.xml)
			-xxx.html
	
	web.xml配置时class: 
	  <servlet-class>xxxPackages.xxxClassName</servlet-class>
	在WebContent下的web.xml中进行配置。		

2.建包和创建类,用于实现Servlet接口,重写一系列方法

Servlet->GenericServlet->HttpServlet
接口			抽象类			抽象类

1.void destroy()   					//用于资源回收,仅执行一次
2.ServletConfig getServletConfig()
3.String getServletInfo()		
4.void init(ServletConfig config)	//资源申请,仅执行一次
5.void service(ServletRequest req, ServletResponse res) 
				//用于服务,每一次访问都会执行

3.配置:

方式:
	1.web.xml中配置
	2.注解配置(在Java6以后可以提供,如果使用这种方式,则建工程时不要xml文件)

具体:
1.web.xml中配置
	在<web-app>标签体中</web-app>填入以下信息:

		<servlet>
		  <servlet-name>demo1</servlet-name>
		  <servlet-class>DemoServlet.Servdemo</servlet-class>
		 </servlet>
		  
		 <servlet-mapping>
		  	<servlet-name>demo1</servlet-name>
		  	<url-pattern>/demo1</url-pattern>
		 </servlet-mapping>


	解释:
	Tomcat服务器的实际行为:
		由于:在浏览器的地址栏输入:localhost:8080/ProjectName/资源路径
		其中的资源路径:
			正是 <servlet-mapping> 中的<url-pattern>中的路径
		1.通过url-pattern中的资源路径访问网页,并通过映射找到servlet-name中的名称
		2.通过servlet-name中的名称在<servlet>标签中找到这个名称对应的servlet-class(完整包名路径)
		3.通过该路径可以加载这个路径指向的类,并创建该类对象,
			之后再创建Request,Response对象,并传入该类对象的service方法,再执行。


2.注解配置(在Java6以后可以提供)
	使用注释配置时,不必创建web.xml,甚至可以说是不要创建它
	在类上标注 @WebServlet("/demo1") 即可 //demo1为设置的资源路径

4.访问网页:

1.首先使用Debug运行类中的代码..可以看见日志信息
2.使用浏览器输入:
	http://localhost:8080/工程名/资源路径
	
	例如:
		http://localhost:8080/TryTom/demo1

GenericServlet:实现了Servlet接口,方法空实现,继承该类后仅需重写service方法

1.To write a generic servlet, you need only override 
	the abstract service method.
2.public abstract class GenericServlet extends java.lang.Object
	implements Servlet, ServletConfig, java.io.Serializable

GenericServlet_src:

public abstract class GenericServlet implements Servlet, ServletConfig,
java.io.Serializable {

    private static final long serialVersionUID = 1L;

    private transient ServletConfig config;

    public GenericServlet() {
        // NOOP
    }

    @Override
    public void destroy() {
        // NOOP by default
    }

    @Override
    public String getInitParameter(String name) {
        return getServletConfig().getInitParameter(name);
    }

    @Override
    public Enumeration<String> getInitParameterNames() {
        return getServletConfig().getInitParameterNames();
    }

    
    @Override
    public ServletConfig getServletConfig() {
        return config;
    }

    
    @Override
    public ServletContext getServletContext() {
        return getServletConfig().getServletContext();
    }

 
    @Override
    public String getServletInfo() {
        return "";
    }

    
    @Override
    public void init(ServletConfig config) throws ServletException {
        this.config = config;
        this.init();
    }

    
    public void init() throws ServletException {
        // NOOP by default
    }


    public void log(String msg) {
        getServletContext().log(getServletName() + ": " + msg);
    }

    public void log(String message, Throwable t) {
        getServletContext().log(getServletName() + ": " + message, t);
    }

    @Override
    public abstract void service(ServletRequest req, ServletResponse res)
            throws ServletException, IOException;

    @Override
    public String getServletName() {
        return config.getServletName();
    }
}

HttpServlet:实现了Servlet接口,继承该类后至少重写一种方法

Provides an abstract class to be subclassed to create an HTTP servlet suitable for a Web site. A subclass of HttpServlet must override at least one method, usually one of these:
	1.doGet, if the servlet supports HTTP GET requests
	2.doPost, for HTTP POST requests
	3.doPut, for HTTP PUT requests
	4.doDelete, for HTTP DELETE requests
	5.init and destroy, to manage resources that are held for the life of the servlet
	6.getServletInfo, which the servlet uses to provide information about itself

解释:
	service 会被判断网页的行为,并根据行为执行各自对应的方法,
		因此重写这些行为即可满足需求

HttpServlet_src:

protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {

    String method = req.getMethod();

    if (method.equals(METHOD_GET)) {
        long lastModified = getLastModified(req);
        if (lastModified == -1) {
            // servlet doesn't support if-modified-since, no reason
            // to go through further expensive logic
            doGet(req, resp);
        } else {
            long ifModifiedSince;
            try {
                ifModifiedSince = req.getDateHeader(HEADER_IFMODSINCE);
            } catch (IllegalArgumentException iae) {
                // Invalid date header - proceed as if none was set
                ifModifiedSince = -1;
            }
            if (ifModifiedSince < (lastModified / 1000 * 1000)) {
                // If the servlet mod time is later, call doGet()
                // Round down to the nearest second for a proper compare
                // A ifModifiedSince of -1 will always be less
                maybeSetLastModified(resp, lastModified);
                doGet(req, resp);
            } else {
                resp.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
            }
        }

    } else if (method.equals(METHOD_HEAD)) {
        long lastModified = getLastModified(req);
        maybeSetLastModified(resp, lastModified);
        doHead(req, resp);

    } else if (method.equals(METHOD_POST)) {
        doPost(req, resp);

    } else if (method.equals(METHOD_PUT)) {
        doPut(req, resp);

    } else if (method.equals(METHOD_DELETE)) {
        doDelete(req, resp);

    } else if (method.equals(METHOD_OPTIONS)) {
        doOptions(req,resp);

    } else if (method.equals(METHOD_TRACE)) {
        doTrace(req,resp);

    } else {
        //
        // Note that this means NO servlet supports whatever
        // method was requested, anywhere on this server.
        //

        String errMsg = lStrings.getString("http.method_not_implemented");
        Object[] errArgs = new Object[1];
        errArgs[0] = method;
        errMsg = MessageFormat.format(errMsg, errArgs);

        resp.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED, errMsg);
    }
}

post:提交表单可以展示出来;get:访问时可以展示出来

xxx.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="http://localhost:8080/WebServlet/demo3" method = "post">
	<label for = "user">登录:</label><input id = "user" name = "username" placeholder="输入用户名"></input>
	<br/>
	<label for = "pwd">密码:</label><input id = "pwd" type = "password" name = "password" placeholder="输入密码"></input> 
	<br/>
	<input type = "submit" value = "提交"></input>
	</form>
</body>
</html>
Insert title here

xxx.java

@WebServlet("/demo3")
public class HttpServDemo extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("get it");
	}
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("post it");
	}
}
二叉树基础知识总结 题外话昨晚面了腾讯,问了一个完全二叉树的题,竟然让我算了快10分钟,因为等比公式记错了导致最后用最原始的方法推算结果也没算对,一下子就懵了。本来精心准备了1周的面试,最后因为自己基础知识记忆不牢固导致了悲剧。不管怎样,还是要继续查漏补缺,准备将数据结构再细细看一遍,先来补上二叉树的这个漏洞吧。 一、树的定义树是一种数据结构,它是由n(n&gt;=1)个有限结点组成一个具有层次关系的集合。 树具有的... 阅读详情

相关推荐

Servlet基础知识Cookie和Session

cookie用来在浏览器端存储用户的状态信息,然后再访问后端的时候将这部分信息带回到后端。cookie的主要内容包括:名字、值、过期时间、路径和域。Session是用来在服务器端保存用户的信息。比如购物车,在用户点击“下单”按钮时,由于HTTP协议无状态,所以并不知道是哪个用户操作的,所以服务端要为特定的用户创建特定的session,用于标识这个用户,并且跟踪用户,这样才知道购物车里面有什么。这个session是保存在服务端的,有一个唯一标识。

HaiMeng一起奋斗 1443

Servlet必须掌握的基础知识

1. servlet生命周期   Servlet 生命周期:Servlet 加载--->实例化--->服务--->销毁。   init():在Servlet的生命周期中,仅执行一次init()方法。它是在服务器装入Servlet时执行的,负责初始化Servlet对象。可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet。无论有多少客户机访问Servlet,都不会

luotuomianyang的博客 1948

Servlet基础知识总结

对Servlet基础知识进行总结,适合新手入门用,里面详细的介绍了Servlet运行原理以及如何创建等

二叉树详解

一篇博文带你走进二叉树,了解二叉树的基础概念以及实现

qq_52592775的博客 1389

海康工业相机触发模式详解:软触发 vs 外触发,在C#里如何选与用?

本文深入解析海康工业相机的软触发与外触发模式,详细比较两者的特性差异、适用场景及C#实现方法。通过海康SDK配置指南和实战代码示例,帮助开发者掌握工业相机触发模式的选择与优化技巧,提升自动化检测系统的精确性和可靠性。

weixin_42635064的博客 556

告别MATLAB环境!保姆级教程:用Application Compiler把你的GUI程序打包成独立exe(2020R版本实测)

本文详细介绍了如何使用MATLAB的Application Compiler工具将GUI程序打包成独立exe文件,特别针对2020R版本进行实测。从技术原理、配置详解到打包实战与问题排查,提供完整的解决方案,帮助开发者实现无需MATLAB环境的程序分发,提升工作效率。

weixin_30571465的博客 274

JavaWeb基础知识之Servlet

1、所需要的环境 jdk、tomcat、mysql(最好有) 2、生命周期 Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程: Servlet 通过调用 init () 方法进行初始化。这里只在第一次请求servlet时创建。 Servlet 调用 service() 方法来处理客户端的请求。这里有类似于doGet和doPost方法。 Servl...

Zystem 1081

SAP MTO实战:从销售订单到生产订单的精准触发与配置详解

本文深入解析SAP系统中按订单生产(MTO)模式的核心流程与配置。详细阐述了如何通过精准配置物料主数据策略组、需求类型及计划策略(如策略50),实现从销售订单自动触发生产订单的完整链路。文章结合实战案例,指导用户打通销售与生产环节,并提供了关键事务代码与常见问题排查指南,助力企业实现以销定产,优化库存与成本控制。

weixin_29300931的博客 215

Servlet基础知识笔记

Servlet基础知识笔记 1.Servlet 技术 a)什么是 Servlet 1、Servlet 是 JavaEE 规范之一。规范就是接口 2、Servlet 就 JavaWeb 三大组件之一。三大组件分别是:Servlet 程序、Filter 过滤器、Listener 监听器。 3、Servlet 是运行在服务器上的一个 java 小程序,它可以接收客户端发送过来的请求,并响应数据给客户端。 b)手动实现 Servlet 程序 1、编写一个类去实现 Servlet 接口 2、实现 service 方法

m0_50744143的博客 291

FANUC机器人KAREL编程实战:手把手教你用SOCKET指令连接外部设备(附完整.KL文件)

本文详细解析了FANUC机器人KAREL编程中SOCKET指令的应用,从开发环境配置到工业级通讯全流程,涵盖网络参数设置、模块化代码设计、错误处理及现场调试技巧。通过实战案例,帮助开发者掌握与外部设备稳定连接的关键技术,提升工业自动化系统的通讯可靠性。

weixin_30907935的博客 226

K230开发板实战:YOLOv8n模型部署全流程(附常见报错解决方案)

本文详细介绍了在K230开发板上部署YOLOv8n模型的完整流程,包括模型选型、配置文件优化和运行时调优。特别针对常见的'生成部署文件异常'等问题提供了实用解决方案,帮助开发者高效完成嵌入式AI模型的部署与优化。

g8f9d0s1a2的博客 1048

Servlet 基础知识学习

Servlet学习笔记Servlet学习笔记Servlet 简介重定向与转发生命周期与创建时机模糊映射过滤器session 超时监听器注解文件上传与下载jsp 安全模式 Servlet学习笔记 Servlet 简介 Servlet 是运行在 Web 服务器端的 Java 应用程序,它使用 Java 语言编写,具有 Java 语言的优点。与 Java 程序的区别是,Servlet 对象主要封装了对 HTTP 请求的处理,并且它的运行需要 Servlet 容器(tomcat)的支持,在 Java Web 应用方

菜鸟心声:学的不仅是技术,更是梦想! 1215

C#使用OpenCvSharp+微信模型识别多个二维码

本文介绍了一个基于OpenCvSharp和微信开源二维码检测器的多二维码识别项目。该项目通过C# WinForm实现,主要功能包括:加载图片、识别图片中的多个二维码并显示识别结果。核心代码使用了OpenCvSharp.WeChatQRCode类,通过预训练的caffe模型(detect.prototxt/detect.caffemodel和sr.prototxt/sr.caffemodel)进行二维码检测和解码。识别结果包括每个二维码的编号、内容及位置信息。项目适用于批量二维码识别场景,部署简单,识别效果良

遇见--专栏 123

Servlet与JSP基础知识

Servlet 1、什么是Servlet 是sun公司制定的一种用来扩展web服务器功能的组建规范。 扩展web服务器功能:        web服务器(比如apache,iis等)只能够处理静态资源的请求,(即,需要事先将html、图片等资源准备好,并且存放到web服务器上),不能够处理动态资源的请求(需要通过计算,生成相应的htmL),所以需要扩展其功能。可以使用servlet来扩展web服务器的功能。当请求到达web服务器,如果需要计算,则web服务器调用se

Challenge_and_smiles的博客 855

SAE ARP 4761A内容详解

SAE ARP 4761A主要为民用航空系统及设备的安全评估提供指南,帮助制造商和设计者满足FAA的FAR 25.1309等适航标准的要求。该文档旨在为航空器和航空系统设计中涉及的安全评估流程提供一个结构化的框架,并结合一系列工具和方法,如故障树分析(FTA)、依赖图分析(DD)、马尔可夫分析(MA)等,来系统地评估潜在的安全隐患。这一标准不仅适用于大型航空器的设计和评估,还可以应用于各种类型的飞行系统,如无人驾驶飞行器(UAV)和新型的电动垂直起降飞机(eVTOL)。

qq_41854911的博客 3149

量化交易:如何在QMT中运行Python策略并在VSCode中高效调试?

哈喽,大家好,我是木头左!

木头大左的博客 3759

【学习记录】Servlet基础知识

Servlet基础知识学习记录,包含Servlet简介、构建HelloServlet项目、Servlet原理、Mapping、ServletContext对象。

木易RUN200的博客 155

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【servlet】servlet基础知识总结

1._ Servlet简介 JavaWeb的三大组件(Servlet、Filter、Lisener)之一,是动态资源的一种。 Server Applet(服务器小程序),是由服务器端调用和执行的、按照Servlet自身规范编写的Java类。  按照一种约定俗成的称呼习惯,通常我们也把实现了servlet接口的java程序,称之为Servlet 作用: 接收请求 处理数据 完成响应 注意,下文一切的基础,是一个 javaweb项目 2._ Servlet详解 2.1_实现Servlet的三种方式 1,实现

咖啡味的小认真 773

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

servlet基础知识汇总

这里写目录标题 servlet需要掌握的什么时候servletservlet体系结构接口servlet接口ServletConfig servlet生命周期代码操作继承GenericServlet类 servlet类GenericServl...

a56499的博客 268

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

servlet基础知识

servlet Java Servlet : 运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层(业务层)。 Servlet 类提供了五个方法,其中三个生命周期方法和两个普通方法 实现servlet接口: servlet生命周期:从Servlet被创建到Servlet被销毁的过程。 换句话说,servlet运行时在servlet容器中,其生命周期是由容器来管理的。servlet的生命周期通过javax.s

lzx2953763519的博客 226

Web基础知识和Servlet

一. Web基础知识 1. 软件架构 C/S:客户端/服务器端 B/S:浏览器/服务器端 2. Web资源分类 静态资源:每个用户请求后响应的资源都相同,可以直接被浏览器解析,如HTML,CSS,JavaScrip等 动态资源:不同用户请求后响应的资源可能不同,需要先转换为静态资源再返回给浏览器,如Servlet/Jsp等 3. Web服务器软件 服务器软件:可以接收请求,处理请求,并产生响应的软件 Web服务器软件:可以接收请求,处理请求,并产生响应的软件;还可以部署Web项目,使用户可以通过浏

m0_56876200的博客 119

Servlet的基础知识

没有什么固定的结构, 就是稍微总结一下学习到的, 基本上想到哪里写到哪里. 关于基本的最HttpServlet 实际上Servlet是J2EE(也就是现在的Java EE)中规范的一个接口, 用于根据客户端请求生成响应内容并将其传给服务器, 也就是Java的动态Web应用的基本. 大概的体系构架, 可以用实例代码稍微探索了一下 : 这个类是HttpServlet的子类, 对着HttpServl...

weixin_30904593的博客 106
上一篇: MVC模式.md
下一篇: Cookie基础知识
Tket
博客等级 码龄9年 21粉丝 114原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值