博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Servlet笔记
阅读量:2343 次
发布时间:2019-05-10

本文共 3324 字,大约阅读时间需要 11 分钟。

一 简介

Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。 它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。 Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载(如TOMCAT),该Web服务器必须包含支持Servlet的Java虚拟机。

Servlet替代了传统CGI程序。

Servlet可以访问几乎所有JDK API 使用HTTP协议与客户端进行通信。

servlet用特定的Java解决方案替代了其他Web服务器端编程模式(如CGI),servlet继承了Java 所有特性 比如跨平台 多线程 面向对象。

JSP技术实际是Servlet技术的拓展,用于支持HTML和xml,JSP页面在首次运行时将被Web服务器转换为Servlet程序,然后在WEB服务器中运行

Servlet Applet
运行在服务器 运行在客户端
装载在Web服务器上执行 装载在Web浏览器上执行
二 作用

客户端请求→服务器→Servlet

当启动Web服务器或客户端第一次请求服务的时候,自动载入servlet。直到web服务器关闭结束。

1.返回包含处理结果的HTML片段或整个页面。

2.读取用户发来的隐藏/显式数据。

3.与其他服务器资源通信。

4.通过状态代码和响应头向客户端发送隐藏数据。

三 生命周期

始于被装入Web服务器内存,在服务器终止时结束。经历4个阶段:装入 初始化 调用 销毁

1.初始化

servlet容器完成加载servlet类和实例化serlvet对象后 init()开始执行完成初始化功能,这个动作在生命周期中仅有一次。

2.调用

收到客户端请求→ 服务器创建针对于该请求的servletRequest类型的对象和servletResponse类型的响应对象。调用service()方法进行处理。若自定义的servlet类重写了doGet()或者doPost()方法 ,那么service()不必重写,因为它会默认调用这两个方法。

3.销毁

servlet被销毁前会调用一次destroy()方法。

JAVA servlet API

servlet提供了两个基本软件包 javax.servlet 和 javax.servlet.http

未完待续

写一个servlet的例子:

第一步 把这段java文件放到src里面

package servlet;import java.io.IOException;import java.io.PrintWriter;import java.util.Enumeration;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class CircleServlet extends HttpServlet {	//这里是响应get提交方式	public void doGet(HttpServletRequest request, HttpServletResponse response)			throws ServletException, IOException {		response.setContentType("text/html; charset=utf-8");// 返回html		PrintWriter out = response.getWriter();		double r = Double.parseDouble(request.getParameter("r"));		out.println("面积:" + Math.PI * r * r);		out.close();	}	//这里是响应post提交方式	public void doPost(HttpServletRequest request, HttpServletResponse response)			throws ServletException, IOException {		response.setContentType("text/html; charset=utf-8");// 返回html		PrintWriter out = response.getWriter();		// double r = Double.parseDouble(request.getParameter("r"));		Enumeration paras = request.getParameterNames();		while (paras.hasMoreElements()) {			String name = paras.nextElement().toString();			out.println("提交的参数名是" + name +"你提交的参数是:" + request.getParameter(name));		}		// double r = 1;		// out.println("面积:" + Math.PI * r * r);		out.close();	}}
对于不同的提交方式(get post)会有不同的响应。

第二步 

在WEB-INF的web.xml里配置,如果用MyEclipse的话会有界面化的配置选项,首先在servlet里面ADD, servlet -Name写类名 servlet-class写包名+类型 比如:servlet.CircleServlet。这里就添加了一个servlet,然后还要添加在访问什么url的时候调用这个servlet,在 servlet Mappings里面 ADD, servlet -Name跟上面一样,URL可以写/area。

如图

第三步:

写调用serlvet的JSP:

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>						
输入圆的半径:
注意action里写的URL,方法选择的是get,运行后结果如图:

在init方法中可以读取一些东西哦

比如读取网站实际物理途径

String path = null;	public void init(ServletConfig config) throws ServletException {		super.init(config);		path = config.getServletContext().getRealPath("/");			}
web.xml里可以放一些键值对作为全局变量,比如在web.xml里添加context param: name:myName value:风吹草地屁屁凉

然后init这么写

String path = null;	public void init(ServletConfig config) throws ServletException {		super.init(config);		path = config.getServletContext().getInitParameter("myName");		System.out.println(path);	//注意这里,这句是显示到启动tomcat的dos界面里,而且是当第一次访问servlet时显示,证明了当用户第一次访问servlet时它才被初始化并调入内存.			}

转载地址:http://lgyvb.baihongyu.com/

你可能感兴趣的文章
彻底搞懂四元数
查看>>
四元数与欧拉角(RPY角)的相互转换
查看>>
bundle adjustment算法学习
查看>>
Structure from Motion 资料总结
查看>>
Eigen库使用教程之旋转矩阵,旋转向量和四元数的初始化和相互转换的实现
查看>>
Absolute Orientation - Horn's method
查看>>
谈谈gnuplot(五):坐标取值范围及刻度
查看>>
从Intel和ARM双雄争霸读懂芯片的前世今生
查看>>
Android Studio教程从入门到精通
查看>>
Android Studio的下载、安装与配置
查看>>
kalibr 如何从bag中提取图像/由图像生成bag
查看>>
ROS编译:catkin简析
查看>>
catkin 编译之后,直接更改目录导致的错误
查看>>
ROS中rosrun和roslaunch命令的对比
查看>>
android camera2 详解说明(一)
查看>>
ROS总结——录制和回放数据
查看>>
SAGE入门:开源数学系统之集大成者
查看>>
OpenCV4Android+JNI开发快速上手入门
查看>>
Eigen 3.2稀疏矩阵入门
查看>>
python和numpy的版本、安装位置
查看>>