servlet入门MVC

article/2025/10/2 18:34:10

一、servlet是什么

Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。

狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。

实际上就是一个实现了servlet接口的java类,可以实现动态web的开发,有了servlet,就可以处理网页传过来的数据,然后将结果返回。

Java Servlet 通常情况下与使用 CGI(Common Gateway Interface,公共网关接口)实现的程序效果差不多。但比起GCI,servlet的优势体现在它的几个特性上。

二、servlet特性

1.可移植性:依托于Java语言的跨平台
2.可扩展性,高效:单例多线程,不像CGI一次请求一个实例
3.安全的:依托Java特性,更安全,少错误

三、servlet和jsp的区别和联系

联系

  • JSP是web开发技术,Servlet是服务器端运用的 小程序,我们访问一个JSP页面时,服务器会将这个JSP页面转变成Servlet 运行得到结果后,返给浏览器。

区别

  • JSP更多的是进行页面显示,Servlet更多的是处理业务

(oldServlet)

四、servlet工作流程

1.浏览器请求request
2.服务器,servlet处理请求
3.响应response浏览器
来源:https://www.cnblogs.com/whgk/p/6399262.html

五、Generic Servlet & HTTP Servlet

servlet官方文档:http://tomcat.apache.org/tomcat-5.5-doc/servletapi/

  • javax.servlet包——包含servlet或Web容器使用的许多接口和类,协议无关。

  • javax.servlet.http包——包含的接口和类仅适用于http协议

  • *GenericServlet是与协议无关的抽象类,因此可以被扩展成使用其它协议的Servlet,如Ftp,SMTP等,一般web应用用不到除HttpServlet以外的

  • 每个servlet必须继承 javax.servlet.GenericServlet 和 javax.servlet.http.HttpServlet的其中一个
    (源码理解这张实现、继承图)
    来源:https://www.cnblogs.com/deng-cc/p/7462866.html

(demo)

1. Generic Servlet

有抽象方法service(),继承时必须重写service()方法(不重写就会报错)
在这里插入图片描述

2. HTTP Servlet

有方法service(),但继承时不需要重写service()方法,service()会负责调用请求对应的方法,即下列方法中的一种

但是必须至少重写下列方法中的一个:(为什么不重写service(),查看源码,因为httpservlet继承genericservlet,并且重写了其service,使得service()方法里一一对应下列方法)

  • doGet() – 处理GET请求,用于向服务器获取数据
  • doPost() – 处理POST请求,用于向服务器发送数据
  • doPut() – 发送文件
  • doDelete() –向服务器请求删除数据
  • init() and destroy() – 用于初始化、销毁servlet生命周期
  • getServletInfo() – 获取servlet基本信息,如版本、作者等

来源:https://beginnersbook.com/2013/05/working-of-servlets/

六、servlet生命周期(demo)

两种情况:

  • 实例不存在:用户请求——>当servlet实例不存在时——>装载servlet并创建servlet实例——>①初始化:调用init()方法——>②响应请求:调service()方法。由service()根据提交方式选择调用doGet() 或 doPost()方法——>③终止:调destroy()方法

  • 实例存在:用户请求——>当servlet实例存在时——>①响应请求:调service()方法——>②终止:调destroy()方法

来源:https://www.cnblogs.com/deng-cc/p/7462866.html
在这里插入图片描述

七、编写servlet 项目

1. IDEA创建servlet项目

在这里插入图片描述
在这里插入图片描述
在WEB-INF下新建classes,lib文件

  • classes 为项目编译输出位置 (可以直接继承project的编译输出位置out)
  • lib 存放jar包(Tomcat有的jar包可以不放lib,lib可以存放其他jar包,比如c3p0等等)
    在这里插入图片描述
    修改项目编译位置为classes
    在这里插入图片描述
    配置依赖
    在这里插入图片描述

在这里插入图片描述
选Jar Directory
在这里插入图片描述

没有webapplication选项的情况:
新建普通项目,一直next
然后选中项目 右键,“Add Framework Surpport”增加项目框架
在这里插入图片描述
选“Web Application”
在这里插入图片描述

2. servlet实现登录(demo)

doGet() VS doPost()区别
  • doGet() – 处理GET请求,用于向服务器获取数据
  • doPost() – 处理POST请求,用于向服务器发送数据

3. servlet 转发和重定向区别(demo)

这篇博客写的太生动形象了,通俗易懂:
https://blog.csdn.net/fgx_123456/article/details/77808304

request.getRequestDispacther("/test.jsp").forword(request,response);
从字面上也可以理解:带着request,response向test.jsp前进!
response.sendRedirect(“test.jsp”);
从字面上也可以理解:返回客户端一个叫test.jsp的页面。

方法区别
request.getRequestDispatcher服务器内部跳转,地址栏信息不变,只能跳转到web应用内的网页
response.sendRedirct页面重定向,地址栏信息变,可跳转到任意网页
方法怎么选择
request.getRequestDispatcher(数据保存)前后页面间有数据传递时,后面的页面要用前面页面的数据时
response.sendRedirct(数据不保存)没有数据传递

4. servlet配置(两种方法)

1). web.xml配置
  • <servlet></servlet>
  • <servlet-mapping></servlet-mapping>
  • <url-pattern>可以有多个,映射多个url,*是通配符
	<servlet><!--可以随意取,习惯上和servlet类名相同--><servlet-name>OldServlet</servlet-name><!--servlet类所在位置--><servlet-class>com.bluemsun.servlet.OldServlet</servlet-class></servlet><servlet-mapping><!--和<servlet></servlet>中servlet-name保持一致--><servlet-name>OldServlet</servlet-name><!--映射的url,设置后可通过浏览器访问,"/"斜杠不能省略--><url-pattern>/oldServlet</url-pattern></servlet-mapping>
  • <load-on-startup></load-on-startup>(附代码演示理解)
  • 标记容器何时加载servlet(实例化并调用init()方法)
  • 如果为 负值或者没有配置 ,则容器会当Servlet被请求时再加载
  • 如果为正整数或者0,则容器在应用启动时就加载并初始化
  • 值越小,servlet的优先级越高,就越先被加载。值相同时,容器就会自己选择顺序来加载。
	<servlet><servlet-name>LifeCycleServlet</servlet-name><servlet-class>com.bluemsun.servlet.ServletLifeCycle</servlet-class><!-- 加载顺序 --><load-on-startup>0</load-on-startup>
<!--        <load-on-startup>-1</load-on-startup>--></servlet>
  • <init-param></init-param>
<servlet><servlet-name>TestServlet</servlet-name><servlet-class>com.bluemsun.servlet.TestServlet</servlet-class><!--初始化参数--><init-param><param-name>first</param-name><param-value>这是第1个初始化参数</param-value></init-param><init-param><param-name>second</param-name><param-value>这是第2个初始化参数</param-value></init-param></servlet>
2). 注解配置@WebServlet

https://blog.csdn.net/mytt_10566/article/details/70173007

@WebServlet(name = "TestServlet",urlPatterns = "/test",loadOnStartup = 1,initParams = {@WebInitParam(name="first", value="这是第1个初始化参数"),@WebInitParam(name="second", value="这是第2个初始化参数")}
)
3)登录demo——相对路径问题
form表单action提交路径:
  • 加 “ / ” —> 匹配当前文件所在目录
  • 加 “ / ” —> 匹配项目根目录
  • 如果当前文件直接在根目录下,即可加可不加“/”
  • 加“ ./ ” —> 匹配当前文件所在 目录或子目录
  • 加“ . . / ” —> 匹配当前文件所在 父目录

参考:
关于路径前加于不加(/)反斜杠
实践:form表单的action路径加不加斜线

项目结构:注意所有jsp文件都是放在jsp目录下的!!!

在这里插入图片描述

servlet配置如下:
<servlet><servlet-name>LoginServlet</servlet-name><servlet-class>com.bluemsun.servlet.LoginServlet</servlet-class></servlet><servlet-mapping><servlet-name>LoginServlet</servlet-name><url-pattern>/login</url-pattern></servlet-mapping>
form表单如下:
<html>
<head><title>登录页面</title>
</head>
<body><p>登录</p><form action="" method="post">用户名:<input type="text" name="username" />密码:<input type="text" name="password" /><input type="submit" value="登录" /></form>
</body>
</html>
action路径四种写法,分别对应不同路径:
//不加“/”,此时相对路径为 /jsp/login
<form action="login" method="post">//加“/”,此时相对路径为 /login
<form action="/login" method="post">//加“./”,此时相对路径为 /jsp/login
<form action="./login" method="post">//加“../”,此时相对路径为 /login
<form action="../login" method="post">

5. servlet对象

(testServlet+官方文档)
在这里插入图片描述
对应关系:Servlet与JSP九大内置对象的对应关系

getParameter() VS getAttribute()区别:

  • getParameter()获取的是客户端请求的数据
    getAttribute()获取的是服务器设置的参数
  • getParameter()返回字符串
    getAttribute()返回任意类型

setAttribute,getAttribute方法
request,session,application都可以调用,根据他们的生命周期而定

servlet三个作用域
request,session,application(作用域demo)

  • Request是一个请求内
  • Session是一次会话中
  • Application是多次会话(直到Tomcat关闭)

getRealPath()、getContextPath()区别:

  • 获取绝对路径
    getServletContext().getRealPath("/WEB-INF/web.html");
  • 返回响应的上下文路径
    getServletContext().getContextPath());

servlet高级:filter、会话跟踪…

八、MVC

1. 发展

  • Model1:主要分为两层,视图层和模型层,其中JSP同时作为View、Controller,将页面展示和业务逻辑混在一起,耦合度高、代码的复用性低。
  • Model2:MVC , 模型Model、视图View、控制器Controller

2. MVC是什么

MVC 全称 Model View Controller,包含模型Model、视图View、控制器Controller。

MVC是一种框架模式,用于分层开发,可以将页面显示(如:html,jsp)、逻辑(如:servlet)、数据分开,可以让前端专注于页面展示,后端专注于业务逻辑。

  • Model(模型) :模型主要负责业务逻辑的处理,包括如何将数据存入数据库、或者从数据库取出。
  • View(视图) :视图也就是我们看的见的界面部分,将传来的数据进行了渲染、可视化。
  • Controller(控制器) : 控制器作用于模型和视图上,也就是将视图传过来的数据交给模型处理,处理完后用把响应数据传给视图层渲染。

2. 特点

  • 低耦合
    降低了视图与业务逻辑间的双向偶合,比如jsp,如果更改控制层,不用重新一起编译视图层,哪一部分需要修改,只用改对应的部分,不会牵连到其他层。

  • 重用性高
    多个视图可以请求访问一个服务器端,由一个服务器端处理逻辑,比如手机端和电脑端的访问,视图可能有差别,但用的服务器里的代码都是一样的

  • 可维护性高
    因为视图层和逻辑层分开了,所以项目的维护和修改更加容易。

3. 三层架构和mvc关系

三层架构:表示层UI(web层)、业务逻辑层BLL(service层)、数据访问层DAL(dao层)
来源:https://blog.csdn.net/weixin_41896463/article/details/89892612
图片来源:https://blog.csdn.net/weixin_41896463/article/details/89892612

4. 常见的服务器mvc框架:

Struts、Spring MVC、ASP.NET MVC、Zend Framework等等

参考:
servlet官方文档:http://tomcat.apache.org/tomcat-5.5-doc/servletapi/
servlet参考博客:https://www.cnblogs.com/whgk/p/6399262.html
https://www.cnblogs.com/xdp-gacl/p/3760336.html

mvc参考博客:https://blog.csdn.net/weixin_41896463/article/details/89892612

课后:
1.预习博客,预习mysql基本语法,创建数据库、修改数据库、基本的增删改查、mysql数据类型等
2.修改上次的jsp为jsp+servlet,分离页面和逻辑代码,记录修改过程


http://chatgpt.dhexx.cn/article/4xYstDPM.shtml

相关文章

Java Web之Servlet入门

Java Web之Servlet入门 ​ 上世纪90年代&#xff0c;随着Internet和浏览器的飞速发展&#xff0c;基于浏览器的B/S模式变得火爆起来。 最初&#xff0c;用户使用浏览器向WEB服务器发送的请求都是请求静态的资源&#xff0c;比如html、css等。 但是静态网页很难满足不同用户的需…

Servlet入门必备知识

目录 什么是Servlet 手动实现Servlet程序 常见的配置错误 Servlet-url如何定位到Servlet程序去访问 Servlet生命周期 Servlet生命周期总结 Servlet 请求的分发处理 什么是Servlet 1、servlet是javaEE规范之一。规范就是接口 2、servlet就是javaweb三大组件之一。三大组件…

Servlet入门

一&#xff0c;简单使用servlet 1.在游览器输出hello Word 1.创建一个java普通类&#xff0c;实现Servlet类 实现servlet类有三种方法&#xff1a;①实现servlet接口②继承GenericServlet③HttpServlet package com.hqyj.gwr.servlet;import javax.servlet.*; import java.…

Servlet快速入门

目录 1、Servlet简介 2、代码实现 2.1、环境准备 2.2、实现servlet接口 2.3、配置web.xml文件 2.4、url-pattern的三种配置方式 2.5、快速创建Servlet 2.6、修改快速创建模版&#xff08;针对以上模版不一致或者webServlet中请求路径没有/&#xff09; 3、项目部署位置…

12款免费HTML5开发框架和开发工具…

HTML5 在不同的领域让网页设计更强大的。快速&#xff0c;安全&#xff0c;响应式&#xff0c;互动和美丽&#xff0c;这些优点吸引更多的Web开发人员使用HTML5。HTML5有许多新的特性功能&#xff0c;允许开发人员和设计师创建应用程序和网站&#xff0c;带给用户桌面应用程序的…

HTML --- 开发工具篇(Hbuilder X)以及相关标签

目 录 1.常见的开发工具有 2.创建HTML文件 3.!DOCTYPE html标签 4.页面语言标签lang 5.设置字符集编码方式charset和META标记 为了提高我们的开发效率&#xff0c;减少代码的出错&#xff0c;我们并不提倡用记事本开发&#xff0c;我们有更好的开发工具。开发工具功能…

HTML与CSS基础(一)—— HTML基础(web标准、开发工具、标签)

目标 能够理解HTML的 基本语法 和标签的关系 能够使用 排版标签 实现网页中标题、段落等效果 能够使用 相对路径 选择不同目录下的文件 能够使用 媒体标签 在网页中显示图片、播放音频和视频 能够使用 链接标签 实现页面跳转功能 一、基础认知 目标&#xff1a;认识 网页组成 和…

HTML系列之开发工具

一 欢迎来到我的酒馆 介绍web开发中&#xff0c;各种开发工具的安装与使用。 目录 一 欢迎来到我的酒馆二.vscode三.webstorm 二.vscode 前端的开发工具种类繁多&#xff0c;如&#xff1a;WebStorm&#xff0c;Sublime Text&#xff0c;Atom&#xff0c;HBuilder&#xff0c;…

【HTML 教程系列第 1 篇】HTML 是什么?常用的开发工具有哪些?

这是【HTML 教程系列第 1 篇】&#xff0c;如果觉得有用的话&#xff0c;欢迎关注专栏。 文章目录 一&#xff1a;HTML 是什么二&#xff1a;HTML 要学习什么三&#xff1a;HTML 文档的后缀名四&#xff1a;HTML 的开发工具有哪些 一&#xff1a;HTML 是什么 HTML&#xff0c…

WebStorm中文HTML编辑开发工具

WebStorm中文是一款功能强大的网页编程工具&#xff0c;功能非常强大&#xff0c;HTML5/JavaScript Web前端开发工具用户可以利用软件实现在线编程&#xff0c;为你提供最为专业的开发服务&#xff0c;让你的工作学习事半功倍被广大中国JS开发者誉为“Web前端开发神器”、“最强…

用于编写HTML代码的常见工具

1、记事本&#xff08;不推荐&#xff09; 特点&#xff1a;记事本编写页面代码不适合初学者使用&#xff0c;因为无代码提示、无代码高亮显示、用户界面不友好&#xff1b; 使用步骤&#xff1a; 首先任选一个位置新建一个记事本 打开记事本&#xff0c;写上代码并保存 将文件…

HTML标签及网页开发工具的使用(VSCode)

一、HTML语法规范 1.1所有的标签都应该包括在<>里面&#xff0c;如<html>或</html>等&#xff0c;大部分的标签都是成对出现的&#xff0c;<>里没/的为开始标签&#xff0c;<>里有/的为结束标签&#xff0c;因为这些标签是成对出现的&#xff0c…

【HTML】前端网页开发工具Vscode中DOCTYPE和lang以及字符集的作用

&#x1f60a;博主页面&#xff1a;鱿年年的学习之路 &#x1f449;博主推荐专栏&#xff1a;《前端基础学习》&#x1f448; ​&#x1f493;博主格言&#xff1a;追风赶月莫停留&#xff0c;平芜尽处是春山❤️ 目录 前言 Vscode工具生成骨架标签新增代码 一、<!DOCT…

HTML(一):开发工具

1.1、开发工具 目前前端开发工具繁多&#xff0c;例如Dreamweaver、Sublime、Hbuilder、Vscide等等。对于新手开发来说&#xff0c;我比较推荐使用HBuilder。 1.2、使用HBuilder 我们在开发的时候&#xff0c;都需要新建一个HTML页面&#xff0c;我都在页面中编写代码。 HBu…

Html5开发工具介绍

14款主流HTML5开发工具 http://sanwen8.cn/p/273vS6p.html HTML5被看做是web开发者创建流行web应用的利器&#xff0c;增加了对视频和Canvas 2D的支持。HTML5的诞生还让人们重新审视浏览器专用多媒体插件的未来&#xff0c;如Adobe的Flash和微软的Silverlight&#xff0c;HTML…

HTML(四)——HTML标签(三)——开发工具插件安装

目录 开发工具 VScode的使用 VScode工具生成骨架标签新增代码 4.3.1 文档类型声明标签 4.3.2 lang语言种类 4.3.3 字符集 总结 VSCode插件安装 安装方法 推荐插件 代码实现 实现结果 开发工具 VScode的使用 双击打开软件新建文件&#xff08;ctrlN&#xff09;保…

HTML简介与开发工具推荐[初学HTML](一)

HTML简介 HTML&#xff08; Hyper Text Markup Language&#xff09;&#xff0c;即超文本标记语言。 1. 基础结构 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible"…

HTML的怎么使用,开发工具以及常用标签。

HTML的怎么使用&#xff0c;开发工具以及常用标签。 欢迎大家去博客冰山一树Sankey&#xff0c;浏览效果更好。直接右上角搜索该文字标题即可 CSDN主页&#xff1a;CSDN主页-冰山一树Sankey 博客园主页&#xff1a;博客园主页-冰山一树Sankey 前端学习&#xff1a;学习地址&…

html - 1.开发工具

HTML简介 HTML(Hyper Text Markup Language)超文本标记语言&#xff0c;是一种标记语言。它包括一系列标签&#xff0e;通过这些标签可以将网络上的文档格式统一&#xff0c;使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成的描述性文本&#xff0c;HTML命令…

HTML的开发工具

主要是Visual Studio Codehttps://download.zol.com.cn/tuiguang/detail/48/470292.shtml?qw &#xff08;这个是下载地址&#xff09; https://www.jb51.net/softjc/733119.html&#xff08;这个是设置为中文&#xff09;