servlet是java服务器端编程,是运行在服务器上的。不同于以前的java小程序。
图一 图二
图一可以看出:服务器与servlet打交道,浏览器不与servlet打交道
图二(服务器端内部流程): 用户发送一个请求,请求访问test1.jsp,然后利用jsp parser(jsp解析器)转换为java文件(服务器端进行转化),这个java文件就是servlet,然后通过servlet解析器将对应的java文件编译出对应的class文件。
当jsp是第一次被访问时,servlet解析器需要将对应的java文件解析成class文件按,若不是,则直接响应。(所以,我们当我们第一次访问jsp页面的时,访问的速度有些慢)
表单中action="/login" 指的是相对路径
action="login"指的是绝对路径
jsp都会转化成servlet去执行
jsp
jsp语法,包括三类:
1.编译器指令:如<%@ page.....%> ,<%@ taglib....%>,<%@ include....%>
2.脚本语言 如注释<!-- --> <%-- --%>
3.动作语言: <jsp:forword> <jsp:....>
<%! int a = 3; %> jsp的声明
<% int b = 3 ; %> jsp的脚本段这两个的区别
在每次刷新页面的时,a--,b不变。本质原因servlet是单例模式的,jsp生成的servlet使用final修饰的
总结:jsp声明的格式为:<%! a = 3; %> 脚本段的形式:<% b = 3; %>,当服务器将jsp转换为servlet时,会将jsp中的声明部分转化为类的成员变量,而将脚本语言转化成方法中的局部变量,servlet是单例模式的,这样成员变量的值就一个,每个用户都会访问到它,而脚本语言的值是局部变量,每个用户访问的时候,各有一份,互不影响。
转义字符: \" 双引号 \‘ 单引号 \\反斜杠
\n 换行 \t 制表符 \b 退格
jsp的九大内置对象
1.request 请求对象, 对象代表的是来自客户端的请求,返回一个枚举对象
2.response
3.session 回话对象
4.pageContext 页面上下文
5.application 应用程序对象
6.out 输出对象
7.config 配置对象
8.page 页面对象
9.exception 异常对象
request的getparameter方法的作用是获取客户端通过URL或表单形式请求过来的参数值。是客户端与服务器端的交互,服务器端要想获取到客户端发送过来的数据,就需要使用getParameter方法来获取。
session对象:session对象代表服务器与客户端所建立的会话。HTTP是基于请求响应模式的无状态的协议,且web server对每个客户端的请求都没有历史记忆。当需要在不同的jsp页面中保留客户信息的情况下,使用session。session是用来保存客户端状态信息的。session对象在会话过程中只有一个。
session常用到的方法有:getAttribute和setAttribute,这两个方法在request和application中都有,并且用法相同
只是,只是,request只能单页面请求,响应,因为request中的这两个方法都是在服务器端执行的,客户端不知道服务器端是否执行过这两个方法。
然而在application中,application是基于应用程序对象,它的生命周期是整个应用程序,也就是服务器启动开始到服务器关闭结束。所以它用它存储的内容数据,会一直存在,知道服务器关闭才销毁。
因为博客中不允许打包实例,所以将实例发表到csdn上面,名字叫:我笨行了吧的账号上面
servlet与jsp理论知识讲解,布布扣,bubuko.com
原文:http://www.cnblogs.com/feiguo/p/3746972.html