2021.02.23:Jsp与Servlet
一:Jsp的运行过程
(1)翻译:Jsp文件-->java文件 翻译的作用test.jsp-->test.java
(2)编译:java文件-->class文件 编译的作用test.java-->test.class Tomcat会编译生成的java文件,生成class文件
(3)实列话:Tomcat创建jsp类的对象 tomcat服务器构造test类对象
(4)提供服务:Tomcat调用Jsp对象的Service方法,生成响应,返回给客户端浏览器,浏览器进行显示
(5)销毁
结果:第一次访问jsp,执行1,2,3,4
第n次访问执行4
注意:jsp文件修改了或者jsp的临时文件被删除了,要重新走1,2的过程
Servlet的生命周期:
1)构造方法 第一次访问
2)init方法 第一次访问
3)service方法
4)destroy方法
Jsp的生命周期
1)翻译;jsp-->java文件
2)编译:java文件-->class文件
3)构造方法 第一次访问
4)init方法 第一次访问
5)service方法 Service()
6)destroy方法 destroy()
Jsp文件的本质
·Jsp文件本质是一个java类,这个java类也遵守Servlet的规范,可以说,Jsp就是一个Servlet
·Jsp文件对应的java类由容器翻译生成
·我们编写的Jsp文件中的所有内容,都将被翻译到java类中,Service方法中,并且放在固定代码后
·可以说,我们写的jsp代码,无非是java类的Service方法的方法体的一部分。
二:jsp的概念,脚本,表达式
Jsp的概念
Jsp是运行在服务器端的组件,用来生成动态页面
Jsp看起来就是Html+java代码,其中Html实现静态部分,java代码实现动态部分
Jsp也必须使用容器运行
Jsp中的脚本,表达式
Jsp表达式
语法:<%=变量或表达式%>
作用:向浏览器输出变量的值或表达式计算的结果
注意:表达式的原理就是翻译成out.print(“变量”) 通过该方法向浏览器写出内容,表达式后面不需要带分号结束。
Jsp脚本
语法:<%java代码%>
作用:执行java代码
注意:原理把脚本中java代码原封不动拷贝到Service方法中执行
Jsp声明
语法:<%!变量活方法%>
作用:声明jsp的变量或方法
Jsp的注释
<%!-- jsp注释--%>
三:Jsp的内置对象
内置对象本质依然是对象,不过不需要定义,不需要创建,可以直接使用
名字是固定的,不能修改,可以直接调用方法
列:request:类型是HttpServletRequest,因此可以直接调用HttpServletRequest中的任意方法
reponse:类型是HttpServletResponse,因此可以直接调用HttpServletResponse中的任意方法
四:Servlet与Jsp之间传递数据
Jsp提交到Servlet时,往往需要把用户输入的一些数据传递给Servlet,Servlet进行处理
Servlet跳转到Jsp时,往往需要把一些数据传递给Jsp,Jsp进行显示
Jsp提交到Servlet中表单提交时:表单的输入都被作为请求参数提交
Jsp提交到Servlet中使用Url提交时,可以通过Url?name1=value&name2=value2形式传递请求参数
Servlet提交到Servlet或者Jsp时使用HttpServletRequest接口中俩个方法
setAttribute(String,Object)
getAttribute(String)
请求参数与请求属性的区别
请求参数是自动封装到请求中的,直接使用请求的getParameter或者getParameterValues获取即可
请求属性是需要自行写代码保存,然后再取出使用,setAttribuute保存属性,getAttribute获取属性,保存属性时都以Object类型保存,所以获取后需要类型强制转换
Servlet与Jsp的作用总结
jsp主要用来显示动态页面,其中静态部分使用html和文本显示,动态部分使用java代码实现
servlet不再用来显示动态页面,而是用来接收客户端传递过来的数据,根据业务逻辑进行处理,然后跳转到不同的页面,在跳转的过程中,如果需要传递数据,则可以使用请求中的setAttribute方法存储属性。