## JSP:入门学习
1. 概念:
* Java Server Pages: java服务器端页面
* 可以理解为:一个特殊的页面,其中既可以直接定义html标签,又可以定义java代码
* 用于简化书写!!!index.jsp:
<%-- Created by IntelliJ IDEA. User: guoxinlin Date: 2022/4/30 Time: 21:14 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>$Title$</title> </head> <body> $END$ <% System.out.println("hello,jsp"); //在控制台显示 %> <h1>hi jsp</h1> //直接展示在浏览器页面 </body> </html>
因为界面中既有需要服务器动态获取的比如登陆时间,也有一些html的信息比如图片文字等所以可以用jsp来写
、
2. 原理
* JSP本质上就是一个Servlet
浏览器发出请求xx/xx/index.jsp 服务器解析请求信息,找是否有index.jsp资源,找到了jsp的话会将index.jsp转换为.java的文件,接下来会编译这个.java文件生成.class字节码文件。最终是由字节码class文件给浏览器做出响应 (因为只有servlet类才能被访问到)所以JSP本质上就是一个Servlet
3. JSP的脚本:JSP定义Java代码的方式
1. <% 代码 %>:定义的java代码,在service方法中。service方法中可以定义什么,该脚本中就可以定义什么。 所以上面例子在控制台输出hello, jsp
2. <%! 代码 %>:定义的java代码,在jsp转换后的java类的成员位置可以定义在成员变量 、成员方法、静态代码块-----用的少, 因为servlet中尽量不定义成员变量方法容易产生线程安全问题
3. <%= 代码 %>:定义的java代码,会输出到页面上。输出语句中可以定义什么,该脚本中就可以定义什么。<%-- Created by IntelliJ IDEA. User: guoxinlin Date: 2022/4/30 Time: 21:14 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>$Title$</title> </head> <body> $END$ <% System.out.println("hello,jsp"); //在控制台显示 int i=5; //作用域比较小 %> <%! int i =3; %> <%=i%> //就近原则输出5 <%="hello"%> <h1>hi jsp</h1> //直接展示在浏览器页面 </body> </html>
4. JSP的内置对象:
* 内置对象是在jsp页面中不需要获取和创建,可以直接使用的对象
* jsp一共有9个内置对象。
* 今天学习3个:
* request
* response
* out:字符输出流对象。可以将数据输出到页面上。和response.getWriter()类似
* response.getWriter()和out.write()的区别:
区别1* 在tomcat服务器真正给客户端做出响应之前,会先找response缓冲区数据,再找out缓冲区数据。
区别2* response.getWriter()数据输出永远在out.write()之前尽量直接用out往页面输出就ok
5. 案例:改造Cookie案例
注意这里的分割<% %>写法