JavaWeb学习总结第四篇--Servlet开发
Servlet开发
用户在浏览器中输入一个网址并回车,浏览器会向服务器发送一个HTTP请求。服务器端程序接受这个请求,并对请求进行处理,然后发送一个回应。浏览器收到回应,再把回应的内容显示出来。这种请求—响应模式就是典型的Web应用程序访问过程。
JavaWeb应用程序中所有的请求—响应都是由Servlet完成的。Servlet是JavaWeb的核心程序,所有的网址最终都交给Servlet处理。Servlet并没有main之类的执行方法。当用户访问服务器的时候,Tomcat是通过调用Servlet的某些方法来完成整个处理过程的。
Servlet是什么
一个Servlet程序就是一个实现了特殊接口的Java类,它由支持Servlet的Web服务器调用和启动运行。一个Servlet程序负责处理它所对应的一个或一组URL地址的访问请求,并接收客户端发出的访问请求信息和产生响应内容。
Servlet程序可以完成普通Java程序所能完成的大多数任务:
- 获取客户端通过HTML的FORM表单提交的数据和URL后面的参数信息
- 创建对客户端的响应信息内容
- 访问服务器端的文件系统
- 连接数据库并开发基于数据库的应用
- 调用其它的Java类
Servlet工作流程
浏览器提交的请求是遵循HTTP协议的文本。这段文本由服务器也就是Tomcat接收并解析,封装成了HttpServletRequest类型的request对象。所有的HTTP头数据都可以通过request相应的方法查询到。Tomcat同时把输出流封装成为HttpServletResponse类型的response对象,通过设置response对象可以控制输出的内容。在请求—响应的这个过程中,Tomcat把request对象、response对象作为参数,调用Servlet的相应方法,例如doPost(request,response)、doGet(request,response)等。
Servlet接口
Servlet是一种实现了javax.servlet.Servlet接口的类。Servlet接口规定了特定的方法来处理特定的请求。Servlet规范是建立在HTTP规范基础上的。HTTP 1.1 规范支持OPTIONS、GET、POST、HEAD、PUT、DELETE、TRACE等7中访问方式,其中最常用的就是GET和POST了。
GET:表示查询信息,URL中可以附带少量的参数信息,但是URL总长度不能超过255个字符,并且参数会显示在浏览器地址栏。
POST:表示提交信息,一般用于提交大数据信息或者文件,提交的内容不受长度限制,并且不会显示在浏览器地址栏中。
FirstServlet
在了解了Servlet基础知识之后,我们可以试着编写Servlet程序了。首先我们得认识一下Servlet的常用方法
1 import javax.servlet.*; 2 import java.io.IOException; 3 4 /** 5 * Created by Administrator on 2015/6/2. 6 */ 7 8 /* 9 *查看Servlet接口中的方法 10 */ 11 public class AServlet implements Servlet { 12 13 @Override 14 public void destroy() { 15 System.out.println("destroy()...."); 16 } 17 18 @Override 19 public ServletConfig getServletConfig() { 20 System.out.println("getServletConfig()...."); 21 return null; 22 } 23 24 @Override 25 public String getServletInfo() { 26 System.out.println("getServletInfo()...."); 27 return null; 28 } 29 30 @Override 31 public void init(ServletConfig servletConfig) throws ServletException{ 32 System.out.println("init()...."); 33 } 34 35 @Override 36 public void service(ServletRequest request,ServletResponse response) 37 throws ServletException,IOException { 38 System.out.println("service()...."); 39 } 40 }
注意:Servlet的生命周期方法
1 import javax.servlet.ServletException; 2 import javax.servlet.http.HttpServlet; 3 import javax.servlet.http.HttpServletRequest; 4 import javax.servlet.http.HttpServletResponse; 5 import java.io.IOException; 6 import java.io.PrintWriter; 7 8 /** 9 * Created by Administrator on 2015/6/2. 10 */ 11 public class FirstServlet extends HttpServlet{ 12 13 public void service(HttpServletRequest request,HttpServletResponse response) 14 throws ServletException,IOException{ 15 16 PrintWriter out = response.getWriter(); 17 out.println("<html>"); 18 out.println("<font size=30 color=red>www.baidu.com</font><br/>"); 19 out.println("<marquee>" + new java.util.Date() + "</marquee>"); 20 out.println("</html>"); 21 } 22 }
配置<servlet>
我们只有servlet类文件还不行,因为要让Web服务器知道浏览器怎么访问这个Servlet,也就是说需要配置Servlet的类文件与访问方式。这个配置在Web应用程序的描述文件web.xml里完成,配置如下:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 5 version="3.1"> 6 7 <servlet> 8 <servlet-name>xxx</servlet-name> 9 <servlet-class>AServlet</servlet-class> 10 </servlet> 11 12 <servlet-mapping> 13 <servlet-name>xxx</servlet-name> 14 <url-pattern>/HelloServlet</url-pattern> 15 </servlet-mapping> 16 17 <servlet> 18 <servlet-name>yyy</servlet-name> 19 <servlet-class>FirstServlet</servlet-class> 20 </servlet> 21 22 <servlet-mapping> 23 <servlet-name>yyy</servlet-name> 24 <url-pattern>/FirstServlet</url-pattern> 25 </servlet-mapping> 26 </web-app>
<servlet>和</servlet>分别为Servlet配置的开始标签和结束标签。中间的部分就是一个Servlet的配置信息。其中<servlet-name>与<servlet-class>属性分别为Servlet的名称和类名,都是必须配置的。<servlet-name>可以是任意的字符串,但是必须保证该名称在web.xml里唯一。
1 <init-param> 2 <param-name>message</param-name> 3 <param-value>Welcome to FirstServlet</param-value> 4 </init-param> 5 <load-on-startup>1</load-on-startup>
使用<init-param>标签可以配置一个初始化参数,包括一个参数名称和一个参数值。一个Servlet可以配置多个初始化参数。Servlet中可以使用方法getServletContext().getInitParam(String paramName)来取得配置的初始化参数值。
标签<load-on-startup>配置该Servlet的加载方式,可选值为0和1,。如果配置为1,Tomcat在启动的时候就加载该Servlet,否则,Tomcat会在第一次请求该Servlet的时候才加载。
编译运行Servlet
转载于:https://www.cnblogs.com/BaiYiShaoNian/p/4548118.html
JavaWeb学习总结第四篇--Servlet开发相关推荐
- python学习[第十四篇] 文件的输入与输出
python学习[第十四篇] 文件的输入与输出 标准文件类型 一般来说只要程序一执行,就会访问3个文件: 标准输入(键盘) stdin 标准输出(显示器缓冲区) stdout 默认输出到屏幕 标准错误 ...
- 【Java成王之路】EE初阶第二十四篇: Servlet
Sevlet Servlet 是什么 Servlet 是一种实现动态页面的技术. 是一组 Tomcat 提供给程序猿的 API, 帮助程序猿简单高效的开发一 个 web app. Tomcat 是一个 ...
- 【Linux从青铜到王者】第四篇:Linux开发项目之编译器和调试器
系列文章目录 文章目录 系列文章目录 前言 一.Linux编译器-gcc/g++使用 1.背景知识 2.gcc/g++如何完成 1.预处理(进行宏替换) 2.编译(生成汇编) 3.汇编(生成机器可识别 ...
- javaweb学习总结(十四)——JSP原理
一.什么是JSP? JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. JSP这门技术的最大的特点在于,写jsp就像在写h ...
- javaweb学习总结(十四):JSP原理
一.什么是JSP? JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. JSP这门技术的最大的特点在于,写jsp就像在写h ...
- SaltStack 学习笔记 - 第四篇: SaltStack常用模块
SaltStack 通过模块来实现管理,具备丰富的模块功能,命令形式也比较自由,这里通过罗列几个有用的命令来作为入门的学习实验. sys.doc : 类似linux的man命令,可以显示minion支 ...
- JavaWeb学习总结第六篇--认识Session机制
认识Session机制 前文也提到过,常用的会话跟踪有两种技术:Cookie和Session.今天就为大家讲解一下Session机制. 什么是Session? Session是另一种记录客户状态的机制 ...
- javaweb学习总结(九):通过Servlet生成验证码图片
一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下: 创建一个DrawImage Servlet,用来生成验证码图片 1 package gacl.r ...
- python实现用户输入用户名和密码不能为空_Python学习【第四篇】用户输入及判断...
用户输入:例1.写一个小程序为用户输入密码.流程如下:1.用户输入其用户名2.输出\u201CHello +用户名\\/usr\/bin\/env python # name = raw_input( ...
- Python学习笔记(四)QT开发图形界面总结
QT5.QTSide2: VS编辑器可以安装插件 安装后,可以直接拉起编辑器编辑界面,或者再python的安装路径下\Python38\Scripts\ pyside2-designer.exe直接打 ...
最新文章
- SpringCloud + Consul服务注册中心 + gateway网关
- 杨超越的声音+高晓松的脸~如此酸爽的技术,你值得拥有!
- Android构建流程——篇四
- filter的原理(转)
- 使用MongoDB进行事件流
- Python数据清洗 - 洗什么?怎么洗?看完就明白了
- 微课|中学生可以这样学Python(例11.1):tkinter电子时钟程序(1)
- Java故障定位方法总结
- 2208: [Jsoi2010]连通数(Trajan+bitset)
- 方舟外服服务器网站,方舟外服开服表,固定更新
- 小米笔记本重装系统,提示无启动驱动
- 《高等代数学》(姚慕生),习题1.4:行列式的展开和转置
- 眼图观测实验报告_通信原理实验报告 -
- Provisional headers are shown 解决问题
- DATEDIF函数:
- LeCo-82.删除排序链表中的重复元素(二)
- 计算机编程课程顺序_您可以在5月开始学习530项免费的在线编程和计算机科学课程
- 抖音 Android 基础技术大揭秘!
- thinkphp6.0模型篇之关联预载入
- 攻防世界-baby_web详解
热门文章
- jQuery—$ is not a function
- WinForm窗体生命周期
- 【转载】如何让外网访问IIS里面搭建的网站
- Boost Asio dispatch()与post()的区别
- 浅谈C++中类的const成员变量,static成员变量和const static成员变量的区别
- linux rm 命令删除文件恢复_【Linux】恢复误删除的文件或目录
- java 136年以后的时间_136年清明查询 - 136年清明是几号 - 136年清明具体时间
- java导出excel弹出下载框_JavaWeb导出Excel文件并弹出下载框
- ai文件图片连接丢失怎么处理_未来美学丨点亮你的AI技能点(一)
- python3中def的用法-python3中的def函数语法错误