Servlet是一个特殊的java程序,之所以特殊是因为一般的java程序都是通过main()方法运行的,但Servlet中并没有main()方法,要运行Servlet必须将其放在服务器中,Servlet是由服务器调用的,常用服务器有Tomcat等。Servlet的作用是为客户端生成数据以及从数据库中取出数据(取数据使用服务器端小程序JDBC)
Servlet的访问过程如下:
1.浏览器发送请求(请求某个Servlet)到服务器。
2.服务器根据请求的URL去调用相应的Servlet类(如何调用请阅读标题为“服务器如何调用Servlet”的文章),浏览器 不 能直接调用Servlet,而是由服务器去调用。
3.通过Servlet中的打印流对象将生成的HTML等数据输出到服务器。
4.服务器再遵循http协议(超文本协议)将数据输出给客户端浏览器。
由Servlet的访问过程我们得出Servlet的概念:Servlet/JSP就是一种在服务器端动态生成HTML/JS/CSS/XML等数据的一种技术。
Servlet访问过程的进一步描述:
1.http为两端通信规则(客户端和服务器端)。
2.服务器端生成的响应是HTML/CSS/JS/XML等数据,通过在响应头中设置显示形式从而在客户端浏览器正确显示页 面,假如Servlet动态生成的是HTML数据,则在doGet()或doPost()方法体中的响应头中进行此设置: response.setContentType("text/html");
如果Servlet动态生成的是jpg图片,则应改为:
response.setContentType("image/jpeg");
3.客户端浏览器的页面都是由服务器生成,浏览器以指定的格式执行得到的,对于使用jsp编写的页面当第一次请求 时,服务器会动态生成对应的Servlet即.java文件,并编译该文件生成.class文件,所生成的.java和.class文件都保
存在服务器端的work文件夹下,所以访问jsp本质也是访问Servlet,因此jsp本质也是Servlet。
4.客户端和服务器端通信使用http协议,所以http协议中包含用户发送的所有请求信息,如请求行,请求头,内容实 体,这些信息在服务器中通过对象来包装,所有的请求信息被封装进HttpServletRequest的对象request中,服务器 再将该对象传递给指定的Servlet,即作为doGet()或doPost()方法的一个参数,Servlet再根据这些请求信息生成响应 信息,如响应头,响应实体,然后再将所有的响应信息封装进HttpServletResponse对象response中,即doGet()或 doPost()方法的另一个参数,如Servlet生成的HTML数据和图片数据都为响应实体的内容,通过打印流out.println()
将这些实体内容在服务器端生成,再由服务器端遵守http协议将数据输出给客户端浏览器。