jsp
jsp概念
动态网页:数据会不会动态改变
因为jsp本质是servlet servlet是java 所以有java的特点
组件跨平台:jsp跨平台 -》组件跨平台
健壮性:可处理很复杂的业务逻辑,输入不符合规范,也能有合适的处理方式
jsp的三种注释
关于注释的解释:
前两者要被转译,是因为你得在jspServlet中显示,否则你得java、前端注释没意义
前端注释:
<!-- -->
java注释://
jsp注释:
<%-- --%>
在jsp中直接打印strr:
注意:里面不能加分号<%=str %>相当于print.writer(str);
<% String str="我是用来测试的";%>
<%=str %>
关于指令:
pageEncoding:一般情况,只要写了pageEncoding为utf-8:表示不仅设置了本身的编码格式,还设置了浏览器解析的格式编码(版本太旧:还要设置contentType和charset)
jsp原理:
tomcat中有工具类可以将jsp转为jspServlet,我们写的虽然是前端代码,但是tomcat会将这些用out.writer();包装,让jsp变为java文件,继而编译成class
代码演示:
<body>
<!-- 局部代码块 位于_jspservice()中 -->
<% String str="aaaaa";
int a=2;
if(a>3){ %>
<h3>h3标签,如果我要在逻辑判断中显示给你看的话,很麻烦,写的注释要一堆 /%></h3>
<% }else{ %>
<h2>h2标签,如果我要在逻辑判断中显示给你看的话,很麻烦,写的注释要一堆 /%></h2>
<% test();} %>
<!-- 全局代码块 -->
<%!
int b=5;
public void test(){
if(b==5){
%>
<h2>我是全局方法,不信的话你去反编译我的jsp,看下JSPServlet</h2>
<%! }}%>
</body>
静态引入和动态引入
案例分析:
主jsp:(注意:主jsp中声明有全局b变量)
includeStatic:(注意:此处一定要为全局变量,不然写在_jspservice()方法中)
<body>
<p>我是静态引入</p>
<%! int b=3;%>
</body>
includeActive:
<body>
<p>我是动态引入</p>
<% int b=0; %>
</body>
静态引入的jsp会报错,因为两个jsp合并成了一个主jspSerclet.java,导致一个java文件中声明了两个int b 编译不通过
动态引入的jsp正常运行,因为两个jsp分别转译为两个jspServlet.java,在主jsp中实现转发至动态jsp,两个java文件中同时定义了int b 当然没问题!
作用
如果很多地方要重复用到同一个模块/表格 可以将之放在动态/静态引入 利于管理修改,降低代码冗余(例如:所有servlet都要加入一张表格,实现动态引入即可,而不需要在每个servlet一一天添加)