反射创建servlet实例。
jsp页面是一个基于文本的文档。他描述了如何处理请求,以创建响应内容。
为什么tomcat要使用jdk,因为jsp->servlet->.class是由编译的,所以需要jdk而不是jre
jsp里面写什么?
一、指令元素:为了告诉tomcat一些事情,如涉及到文本就告诉tomcat使用的是什么字符编码。(page(定义jsp相关内容。字符编码、生成html的字符编码、错误处理页、是不是一个错误处理页(如果是的话,可以直接使用exception对象))、include(静态包含一个文件)、taglib(声明引入自定义动作元素(标签))一共就三个)
contenttype 响应给浏览器的类型。pageencoding是告诉tomcat当前页面编码格式
errorpage
静态包含:动态包含转成两个servlet
二、动作元素:标准的(jsp本身就支持的)(20多个)、自定义动作元素:里面又有jstl(自定义里面标准化的,官方定义的(标准扩展)),不在jsp本身携带的。 --静态包含,编译前组合到一起,动态,编译后,运行时。
三、脚本元素:函数,一段代码。
#{ }
el表达式<%! 和doget dopost一样,成员方法,变量。转成servlet之后 declare(声明)%>
<% 代码片段,转成servlet之后doget、dopost里面的一小段代码%>
<%= 表达式的值输出去%>(必须得有返回值)
四、模板内容:原版输出(静态页面一整套,原样输出到浏览器的)。jsp区分大小写
(不是指模板内容,标记中的值要用引号括起来)
内置对象:service方法刚进来时,声明了一些对像,我们直接用就可以。
servletconfig对象用来获取在web.xml里面的参数(我们配置的时候,在web.xml里面配置一些参数。这个在init方法里面)。
应该(就)是servlet的init方法。
application对应的是servlet的servletCotext.
pagecontext只能在当前页面有效,他的setattribute方法。只有两个参数的时候,他三个参数的时候可以是request、session等。就会将这些参数放到相应的内置对象中。
EL表达式:简化那个<%= %>的。 格式:${}
作用,获取数据的。 param.name 就是在那个地址栏后边跟的一个?name="貌美灭";(el获取属性值)
动作元素就是标签(通常说的时候)。
date对象标识日期在内存中。
jstl经常和el一起使用,如el获取数据,jstl迭代它。
如果不使用jstl来进行对象迭代,特别麻烦,先得在<%%>里面获取对象,然后在jsp里面写模板元素,还得先把<%%>给结束掉。
url中有些字符不能出现,先转成2禁止,再转成16进制,需要进行编码,(加seesionid,避免cookie关掉,参数编码,加上下文)
为什么使用request来获取diapathcer。转发。
转发使用request还是response,还有redirect。
request可以进行dispatcher的转发,因为是由服务器端进行的操作。
response则可以进行redirect,因为它会响应给客户端浏览器。然后由浏览器进行新servlet的请求。