(周五没发布成功,就跟着周六一起发布好了😥)
今天在上班要写个jsp请求socket,然后我不会写。。
太差了太差了太垃圾了。又是自我分类的一天。
JSP
JSP概述
1. 介绍
由SUN公司提供的动态web资源技术,看起来非常像html,但是其中可以写java代码。
2. 出现原因
为了解决servlet在响应时不适合向外输出页面的问题。
servlet本质是是一段java代码,适合处理逻辑,但是不适合向外输出页面。
HTML适合用于开发页面,展示数据,但是HTML开发出来的页面本质上是一个文档,无法展示动态的数据。
这时,jsp出现了。
jsp既能编写HTML代码,作为响应页面向外输出;又能在写java代码,展示动态的数据。
3. 原理
jsp在第一次访问时,会被翻译成一个servlet,对jsp访问后看到的 页面,其实就是翻译后的servlet在向外输出。
JSP语法
1. 模板元素:html代码
- 模板元素:直接写在jsp页面中的html内容
- 模板元素在翻译过来的的servlet中 被
out.write()
原样输出到浏览器中
out.write("\tday13…index.jsp…\r\n");
2. 脚本表达式
<%= 表达式 %>
- 在jsp翻译过来的servlet中,计算表达式的值原样输出;
out.write( 10 + 20 )
3. 脚本片段
<% java语句 %>
- 在翻译过来的servlet中,脚本片段被复制粘贴到对应位置执行
- 翻译前:
<% for(int i = 0; i < 5; i++){ %> Hello World~<br/> <% } %>
- 翻译后:
for(int i = 0; i < 5; i++){ out.write("\r\n"); out.write("\t\Hello World~<br/>\r\n"); out.write("\t"); }
- 翻译前:
- 多个脚本片段之间的变量可以互相访问。
- 在某一个脚本片段中java代码可以是不完整的,但是在翻译过来的servlet中整体代码必须是完整、符合java语法的。
- 任何文本,html标记、jsp元素必须在脚本片段之外的。
4. 声明
<%! java代码 %>
- 写在jsp声明中的内容,在翻译过来的servlet中会和service方法平级,成为类的成员,声明的是实例成员
ps: 写在脚本片段中的内容,在翻译过来的servlet中是方法的局部变量。
5. 注释
<%-- jsp注释 --%>
<%-- out.write("aaa"); --%>
被jsp注释掉的内容,在翻译的过程中被抛弃,不会被翻译出来<% //out.write("bbb"); %>
被java注释掉的内容,在翻译过程中被当作脚本片段翻译到servlet中,但由于被注释了,所以不会执行 。<!-- <% out.write("aaa"); %> -->
被html注释掉的内容,在翻译过程中直接当成模板元素原样输出到浏览器,但浏览器认为是注释,所以不会显示出来。
在jsp中最好使用jsp注释,html注释慎用。