servlet其工作原理和例子证明
servlet简单介绍
当我们在地址栏里面输入www.baidu.com,终于呈如今我们面前的是百度搜索的页面。在这些訪问过程中,都会有一个webserver来处理这些请求以及訪问处理后的结果。
而servlet就是这样一个用来处理前端请求并处理数据来返回相关数据到界面显示的工具。用以下一张图来表示这样一个过程。
原理简单介绍
对于servlet,它的工作原理也是能够去了解一下的。浏览器依据ip地址。向指定的server发送一个请求。在请求的过程中。依据http协议将请求数据封装成一个数据包。
server端在接受到发送过来的数据包后,解析,再次封装成request对象和response对象。假设是tomcatserver的话,这里依据sun定义的规范。
会找到指定webapps找到建立好的目录,先读取web.xml.在xml中我们找到这样一个xml的节点<url-pattern>.这里存放的是servlet。也就是你编译好的那个class文件的路径。找到这个路径后。通过反射生成servlet对象。再调用这个对象的service方法,将之前解析封装好的两个对象作为这个service方法的參数传进来。拿到从client传过来的数据后,想怎么办就怎么办了。连接数据库还是直接通过一系列的逻辑处理都能够。
处理完毕之后,封装好http协议数据包返回到client。
整个servlet就是这样一个过程了。
与CGI的比較
和servlet相比,CGI也是一种用来使网页具有交互功能的接口。可是因为其移植性、性能、编写难度上和线程訪问上的劣势导致越来越多的人開始使用servlet。换个角度看,servlet是一种相比CGI更加灵活和先进的替代品。
servlet生命周期
1.init()初始化方法
2.service()方法
3.destroy()方法
总的来讲也就是这三个方法的调用了。在servlet容器启动的时候,也就是tomcatserver启动的时候,通过读取配置文件的配置信息来初始化servlet对象。当client向server发出请求的时候,就调用servlet对象的service方法。而destroy方法的运行能够手动。也能够自己主动的销毁。手动就是直接将tomcatserver停了就能够了,自己主动的依据网上的资料。在长时间不动就会自己主动销毁或者写一个监听就能够。这里相比于之前的CGI。servlet在实例化后假设没有销毁的话,会一直存在。而且能够服务给多个浏览器的请求,而CGI每次訪问时会生成一个线程,当server终止后就销毁指定的线程。这也是servlet比CGI效率高的原因。
servlet和cookie、session的关系
Cookie
之前也接触过cookie,这里再次了解一下对应的原理。cookie在client存放有两种方式,a.存放在cache中,浏览器关闭自己主动消失。b.存放在指定的目录中,常常看到的哪些小的浏览器中icon等,会自己主动消失。
在与server交互过程中是。server将返回的数据以键值对的方式发送到client。这样在浏览器第二次訪问时,向server发送这个键就能够了,server接受后,同样的键值就觉得是一个用户。
Session
一个用户相应一个session对象,session到期自己主动消失。
浏览器请求server时,会调用resquest对象的getsession()。从而产生一个session对象,并给session配一个键值。将每一个用户的对象存放在map集合中。server就是依据这些sessionid跟踪这个session的。
而session和cookie都是用来存放用户数据,不同的是session仅限于用户的单个会话。而cookie是存放在client的。而session和cookie又有什么关系,用户和应用程序打交道的过程中,建立session的同一时候会产生一个UUID存在cookie其中,当用户再次请求时,读取这个UUID来server查询相应的session最后得到相应ID的session。
Filter
简单了解一下这个filter。从字面上就知道这个是过滤器的作用。举个样例。这个就和进北京火车站似得。
进入到北京火车站相当于servlet,而filter就是那些安检过程。假设带个管制刀具,汽油易燃物品是须要过滤掉的。filter就是干这个事的,在你在訪问server创建resquest对象之前把一些信息过滤掉。为了让你更好的进火车站。
常见的filter有这些用户辨认filter,日志filter,审核filter,加密filter。符号filter。能够为多个servlet配置一个filter。
实例用户登录
Loginservlet
import java.io.*;
import javax.servlet.http.*;
import javax.servlet.*; public class LoginServlet extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse resp)
throws ServletException,
IOException{
String username=req.getParameter("username");
String password=req.getParameter("password");
System.out.println("username="+ username);
System.out.println("password="+ password); resp.setContentType("text/html;charset=GB18030");
resp.getWriter().println();
resp.getWriter().println("loginsuccess"); } public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException,
IOException{
doGet(request,response);
}
}
Html
<html>
<head>
<title>登录</title>
</head>
<body>
<form action="LoginServlet" method="get">
用户:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
<input type="submit" value="登录">
</form>
</body>
</html>
<head>
<title>登录</title>
</head>
<body> <form action="LoginServlet" method="get"> 用户:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
<input type="submit" value="登录"> </form>
</body> </html>
Web.xml
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0"
metadata-complete="true"> <servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>LoginServlet</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/LoginServlet</url-pattern>
</servlet-mapping> </web-app>
总结
简单来说,servlet就是一个桥梁。一个将client连接和数据库等业务逻辑后台处理连接的桥梁。有了这个桥将界面的显示和后台的逻辑处理分开。也是一个解耦的体现。
说白了也是两个jar包和一些接口的定义和实现,更深次的涉及到一些协议的传输和工作原理。
版权声明:本文博客原创文章,博客,未经同意,不得转载。
servlet其工作原理和例子证明的更多相关文章
- Servlet的工作原理和生命周期
Servlet的工作原理 . Web服务器加载Servlet:Web服务器启动后,它会根据每个工程的web.xml文件去查找该工程的Servlet,并且找到这些Servlet的Class文件所在的地址 ...
- java servlet的工作原理
servlet本质上就是java类嘛.不过是有特殊规范的java类而已.下面就说一说为什么servlet要有特殊规范. 首先,考虑一下什么地方用servlet,WEB应用,而且是需要servlet容器 ...
- JSP 和 Servlet 的工作原理和生命周期
JSP的英文名叫Java Server Pages,翻译为中文是Java服务器页面的意思,其底层就是一个简化的Servlet设计,是由sum公司主导参与建立的一种动态网页技术标准.Servlet 就是 ...
- Servlet 工作原理解析
转自:http://www.ibm.com/developerworks/cn/java/j-lo-servlet/ Web 技术成为当今主流的互联网 Web 应用技术之一,而 Servlet 是 J ...
- Servlet生命周期+工作原理
Servlet生命周期+工作原理 1.Servlet的生命周期: Servlet加载,加载,服务,销毁. 2.典型函数解释: Init():这个函数是用来初始化Servlet对象的.在 ...
- [转]Servlet 工作原理解析
Web 技术成为当今主流的互联网 Web 应用技术之一,而 Servlet 是 Java Web 技术的核心基础.因而掌握 Servlet 的工作原理是成为一名合格的 Java Web 技术开发人员的 ...
- Servlet 工作原理解析--转载
原文:http://www.ibm.com/developerworks/cn/java/j-lo-servlet/index.html?ca=drs- Web 技术成为当今主流的互联网 Web 应用 ...
- 【Java】Servlet 工作原理解析
Web 技术成为当今主流的互联网 Web 应用技术之一,而 Servlet 是 Java Web 技术的核心基础.因而掌握 Servlet 的工作原理是成为一名合格的 Java Web 技术开发人员的 ...
- Java web每天学之Servlet工作原理详情解析
上篇文章中我们介绍了Servlet的实现方式以及Servlet的生命周期,我们这篇文章就来介绍一下常用对象. 点击回顾:<Java Web每天学之Servlet的工作原理解析>:<J ...
随机推荐
- iPhone应用程序开发基础之一: IBOutlet与IBAction
在图形界面编程时,解决的第一问题就是如何将静态界面与代码关联起来,或者说是代码如何与界面上的对象 通信, 代码如何操作界面上的对象.在iPhone平台上,引入了IBOutlet与IBAction.通过 ...
- 使用ViewPager模拟实现应用程序启动界面
经常在开发应用程序的时候,软件启动有启用动画界面,一般使用图片来进行界面该版本最新更新等等内容,今天来使用ViewPager来模拟实现这功能,也希望对大家有个小小的参考作用,在以后的项目中能够使用到. ...
- 更改ORACLE 用户的 expired状态
oracle中, 经常用户的状态会变成locked, expired 等状态, 这种情况下怎么处理呢? 首先, 如果是locked状态还好办, DBA直接执行alter user scott acco ...
- HTML5的优缺点是什么?
HTML5的优缺点是什么?作为HTML的第五次重大修改,HTML5有哪些改进?HTML5又有哪些缺点? 网络标准 HTML5本身是由W3C推荐出来的,它的开发是通过谷歌.苹果,诺基亚.中国移动等几百家 ...
- Python 中的类的相关操作
构造函数 构造函数是任何类都有的特殊方法.当要创建一个类时,就要调用构造函数.他的名字是__init__.init的前后分别是两个下划线.时间类Time的构造函数如下: >>> cl ...
- Spring boot jar 后台运行
start(){ now=`date "+%Y%m%d%H%M%S"` exec java -Xms256m -Xmx512m -jar /alidata/server/webap ...
- Javascript/Jquery——简单定时器
第一种方法: <%@ page language="java" contentType="text/html; charset=UTF-8"pageEnc ...
- Kendo UI开发教程(20): Kendo MVVM 数据绑定(九) Text
Text绑定可以使用ViewModel来设置DOM元素的文本属性,如果需要设置input,textarea,或select的显示,需要使用value属性. 1 <span data-bind=& ...
- Sublime Text3 + Golang搭建开发环境
Sublime Text3 + Golang搭建开发环境 http://blog.csdn.net/aqiang912/article/details/46775409 1.安装git 因为golan ...
- awk 正则表达式
awk 正则表达式.正则运算符详细介绍 前言:使用awk作为文本处理工具,正则表达式是少不了的. 要掌握这个工具的正则表达式使用.其实,我们不必单独去学习它的正则表达式.正则表达式就像一门程序语言,有 ...