Javaweb开发了解前端知识七、Servlet(一)
1.Servlet技术
2.Servlet类的继承体系
3.ServletConfig类
4.ServletContext类
1.Servlet技术
a) 什么是Servlet
Servlet是javaWeb的三大组件。Servlet程序,Listener监听器。Filter过滤器。
Servlet程序主要是运行在Tomcat服务器上。
Servlet程序的作用:接收客户端的请求。响应给客户端数据。
b) 手动实现Servlet程序
1、编写一个类去实现Servlet接口
2、实现Servlet程序中的service方法(处理业务的方法)
3、到web.xml中去配置Servlet程序的访问地址
Servlet程序的源代码:
public class HelloServlet implements Servlet {/*** Servlet程序接收客户端的请求,并且响应数据<br/>* service在每请求进来 的时候,负责 处理业务*/@Overridepublic void service(ServletRequest arg0, ServletResponse arg1)throws ServletException, IOException {System.out.println("HelloServlet 程序被访问了~");}
}
web.xml中的配置:
<!-- servlet标签用来配置一个Servlet程序 --><servlet><!-- 给你要配置的Servlet程序起一个名称,一般放的是类名(可以任意自定义) --><servlet-name>HelloServlet</servlet-name><!-- servlet-class标签是配置Servlet程序的全类名 --><servlet-class>com.atguigu.servlet.HelloServlet</servlet-class></servlet><!-- servlet-mapping是配置Servlet程序的访问地址 --><servlet-mapping><servlet-name>HelloServlet</servlet-name><!-- url-paatern是配置访问地址。/hello 表示http://ip:port/工程名/hello--><url-pattern>/hello</url-pattern>
</servlet-mapping>
a) Servlet的生命周期
1、先执行Servlet的构造方法
2、执行Servlet程序的init初始化方法
构造方法和init初始化方法,只是第一次访问的时候由Tomcat服务器来调用,只调用一次
3、执行Service方法 (每次访问都会被调用)
4、执行destroy方法(服务器停止,停止web工程 )
b) 模拟GET请求和POST请求的分发
请求分为GET请求和POST请求。(一般GET请求和POST请求有可能会做不同的业务操作)
服务器如何区分 GET请求和POST请求。
/*** Servlet程序接收客户端的请求,并且响应数据<br/>* service在每请求进来 的时候,负责 处理业务*/@Overridepublic void service(ServletRequest request, ServletResponse response)throws ServletException, IOException {
// System.out.println("HelloServlet 程序被访问了~");HttpServletRequest httpRequest = (HttpServletRequest) request;// getMethod返回是GET或POST,返回请求的方式String method = httpRequest.getMethod();System.out.println(method);if ("GET".equals(method)) {// 如果是GET请求,执行get业务doGet();} else if ("POST".equals(method)) {//执行post请求的业务操作doPost();}}/*** 这是GET请求需要做的工作*/public void doGet() {System.out.println("doGet 这是GET请求");}/*** 这是POST请求需要做的工作*/public void doPost() {System.out.println("doPost 这是POST请求");}
a) 通过继承HttpServlet实现Servlet程序
在实现的开发中,我们都是使用HttpServlet抽取类去实现Servlet程序。
1、编写一个类去继承HttpServlet类
2、重写doGet方法和doPost方法
3、到web.xml中去配置Servlet程序的访问地址
HelloServlet2类
public class HelloServlet2 extends HttpServlet {/*** doGet方法,是GET请求的时候,会自动的调用*/@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {System.out.println("这是GET请求,调用了doGet方法");}/*** doPost方法,是POST请求的时候,会自动的调用*/@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {System.out.println("这是POST请求,调用了doPost方法");}}
web.xml中的配置:
<servlet><servlet-name>abc</servlet-name><servlet-class>com.atguigu.servlet.HelloServlet2</servlet-class></servlet><servlet-mapping><servlet-name>abc</servlet-name><!-- url-pattern 中 /ccc 表示http://ip:port/工程名/ccc<br/>url-pattern以斜线打头,配置的地址跟在工程名的后面web.xml中有了修改之后一定要重启Tomcat服务器才能生效在浏览器地址栏中输入地址,然后敲 回车是GET请求--><url-pattern>/ccc</url-pattern>
</servlet-mappi
2.Servlet类的继承体系
我们在重写doGet方法或doPost方法的时候,方法体内,一定不能调用super.doGet或super.doPost代码。否则会报405错误
3.ServletConfig类
我们所有的类都是由tomcat服务器进行创建。我们负责使用。
ServletConfig类它封装了Servlet程序的配置信息。
a) ServletConfig类的三大作用
1、获取Servlet程序在web.xml中配置的名称
2、获取在web.xml中配置的初始化参数
3、获取ServletContext对象
public class ConfigServlet extends HttpServlet {private static final long serialVersionUID = 1L;public void init(ServletConfig config) throws ServletException {
// 1、获取Servlet程序在web.xml中配置的名称System.out.println("在web.xml中配置的servlet-name名称:" + config.getServletName());
// 2、获取在web.xml中配置的初始化参数System.out.println("username初始化参数值:" + config.getInitParameter("username"));System.out.println("url初始化参数值:" + config.getInitParameter("url"));
// 3、获取ServletContext对象System.out.println( config.getServletContext() );}
}
web.xml中的配置:
<servlet><servlet-name>ConfigServlet</servlet-name><servlet-class>com.atguigu.servlet.ConfigServlet</servlet-class><!-- init-param 是给Servlet程序配置一个初始化键值对参数 --><init-param><!-- param-name是参数名 --><param-name>username</param-name><!-- param-value是参数值 --><param-value>root</param-value></init-param><!-- init-param 是给Servlet程序配置一个初始化键值对参数 --><init-param><!-- param-name是参数名 --><param-name>url</param-name><!-- param-value是参数值 --><param-value>jdbc:mysql://localhost:3306/test</param-value></init-param></servlet><servlet-mapping><servlet-name>ConfigServlet</servlet-name><url-pattern>/configServlet</url-pattern></servlet-mapping>
注意:ServletConfig是在GenericServlet类中持有的引用。当我们需要在自己自定义的Servlet程序中重写init(ServletConfig)初始化方法的时候。
一定要调用super.init(config); 否则父类中的ServletConfig就不能得到初始化
4.ServletContext类
a) 什么是ServletContext?
1、ServletContext对象是一个接口。
2、ServletContext在一个web工程中只有一个对象实例(也是由Tomcat服务器创建)。
3、ServletContext是一个域对象。
什么是域对象?
域对象指的是可以像map一样存取数据的对象。
put setAttribute 保存数据
get getAttribute 获取数据
域指的保存和获取数据的范围。ServletContext对象它的数据操作范围是整个web工程。
ServletContext对象在web工程启动的时候创建。在web工程停止的时候销毁。
b) ServletContext类的四个作用
1、它可以获取在web.xml中配置的上下文参数<context-param>
2、它可以获取到当前web工程的工程名(工程路径)
3、它可以获取web工程发布到服务器上之后。文件或目录在服务器磁盘上的绝对路径。
4、它可以像map一样存取数据。
protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {// b)ServletContext类的四个作用ServletContext ctx = getServletContext();// 1、它可以获取在web.xml中配置的上下文参数<context-param>System.out.println("上下文初始化参数password的值:"+ ctx.getInitParameter("password"));System.out.println("上下文初始化参数driverClass的值:"+ ctx.getInitParameter("driverClass"));// 2、它可以获取到当前web工程的工程名(工程路径)// getContextPath()获取当前工程名System.out.println(ctx.getContextPath());// 3、它可以获取web工程发布到服务器上之后。文件或目录在服务器磁盘上的绝对路径。// getRealPath是获取指定的路径的资源在服务器上的绝对路径。// / 斜线,表示 根,// / 斜线 在web工程中 表示到http://ip:port/工程名/ 映射到 代码的WebContent目录System.out.println(ctx.getRealPath("/"));System.out.println("WebContent/css的绝对路径是:" + ctx.getRealPath("/css"));System.out.println("WebContent/imgs/ludashi.jpg的绝对路径是:" + ctx.getRealPath("/imgs/ludashi.jpg"));}
在web.xml中的配置:
<context-param><param-name>password</param-name><param-value>root</param-value></context-param><context-param><param-name>driverClass</param-name><param-value>com.mysql.jdbc.Driver</param-value></context-param>
Javaweb开发了解前端知识六、Tomcat
Javaweb开发了解前端知识七、Servlet(一)相关推荐
- Javaweb开发了解前端知识四、Jquery(二)
1.JQuery 的属性操作 JQuery属性操作 html() 它可以设置和获取起始标签和结束标签中的内容 功能跟innerHTML一样 text() 它可以设置和获取起始标签和结束标签中的文本 功 ...
- JavaWeb开发_Web前端_Ajax
JavaWeb开发_Web前端_Ajax 原生Ajax Axios 案例 参考 原生Ajax 概念: Asynchronous JavaScript And XML, 异步的JavaScript和XM ...
- javaWeb开发总结 ---- 前端数据插入到后台
一,概述: 本文主要描述如何将数据通过表单提交到后台并插入到数据库.其中后台使用spring框架. 二,开发流程: 明确需求,即将什么数据插入到数据库 平台搭建,配置spring, 数据库,建表 走通 ...
- SEEK学习论坛-JavaWeb开发实训课题 (数据库MySQL+js+Ajax+Servlet)
关于这次学校实训,我们做了一个类似于CSDN博客的项目,然后我们小组取名叫SEEK,一个学习论坛,前面ppt有介绍,我主要是负责后端数据库的,与MySQL交互,由我的组长写好js代码,然后将前端所获取 ...
- JavaWeb开发 前端语言:jQuery(一) jQuery核心函数、jQuery对象、jQuery选择器、以及jQuery元素筛选
JavaWeb开发 前端语言:jQuery 1.jQuery介绍 1.1 jQuery的初使用 1.2 使用jQuery的常用问题解析 2. jQuery核心函数介绍 3.区分jQuery对象与dom ...
- 【JavaWeb开发-Servlet】拾起海中的漂流瓶超强版
目录 原版: 一.思路: 二.实现: 三.资源分享 四.部署服务器时记得修改文件路径 原版: [JavaWeb开发-Servlet]拾起海中的漂流瓶增强版_代码骑士的博客-CSDN博客[代码][Jav ...
- 【JavaWeb开发-Servlet】拾起海中的漂流瓶
项目原型: [JavaWeb开发-Servlet]老人言随机语录_代码骑士的博客-CSDN博客需求:点击网页按钮随机显示一句话:1.内容涵盖:老人言.励志语录.名言名言.一句情话2.设计要求:以老人言 ...
- 【JavaWeb开发-Servlet】拾起海中的漂流瓶增强版
目录 原版: 1.前端样式 2.错误提示 3.实现id序列增长 完整项目代码: 原版: [JavaWeb开发-Servlet]拾起海中的漂流瓶_代码骑士的博客-CSDN博客需求:点击网页按钮随机显示一 ...
- 前端开发的浏览器知识
前端开发的浏览器知识 1.1 在浏览器中输入url 用户输入url,例如http://www.feng.com.其中http为协议,www.feng.com为网络地址,及指出需要的资源在哪台计算机上. ...
最新文章
- Autofac3 在MVC4中的运用原理
- 使用Altera综合工具Quartus II下载到FPGA时无法识别USB-Blaster问题
- ruby on rails 站点
- PHP中的get_defined_funciton和get_defined_vars
- Python的lambda函数
- ArcMap自定义脚本工具制作
- ubuntu下caffe的FCN8模型训练
- Neural networks and deep learning C1总结(一)
- Windows10系统的MSDN下载和通过U盘进行安装的步骤(亲测有效)
- 记一次PLC和脉冲型伺服电机的接线方法_20210915
- 将图片url转file类型
- 云课堂智慧职教网页版登录入口_云课堂智慧职教网页版登录入口-云课堂智慧职教app官网版下载-XP软件园...
- AutoCAD块属性提取
- SQL语句 按年龄段分组统计人数
- VUE3(二十四)自定义alert弹窗组件
- 原生JS获取QQ好友列表
- 2022中级Android开发面试解答,当上项目经理才知道
- VisionPro (简单介绍)
- Level Set Evolution Without Re-initialization: A New Variational Formulation
- 微观经济学第六周作业(需求函数,收入效应与替代效应)
热门文章
- icloud是什么?
- 12-1 蓝色天空 : 创建一个背景为蓝色的Pygame窗口 12-2 游戏角色 : 找一幅你喜欢的游戏角色位图图像或将一幅图像转换为位图。 创建一个类, 将该角色绘制到屏幕中央, 并将该图像的背景色
- # 标题Windows最强神器,WIN+R的最骚使用方法!
- 【单片机毕业设计】【mcuclub-jj-051】基于单片机的书桌的设计
- 重新安装anaconda的感想
- 深入探索C++对象模型之C++对象(vs,gcc,clang测试)
- 第一本Docker书pdf
- android 2.2(froyo)源码下载
- mysql linux 监控工具_细说linux服务器各种监控工具
- 阿里云服务器永久性修改主机名方法