JSP作为WEB的开发基础,有其重要的地位,那么熟练掌握JSP的语法及应用就成了重中之重。
首先我们一起先从JSP的基本语法学起:(以下内容来自李兴华视频手稿整理)
scriptlet简介
Script表示的是脚本小程序,像之前out.println()这个语句是缩写在<%%>之中的,很明显,这里面 缩写的语句就是一个script.
在jsp中最重要的部分就是Scriptlet(脚本小程序),所有嵌入在HTML代码中的java程序都必须使用
Scriplet标记出来,在jsp中一共有三种scriplet代码
第一种script<%%>
- <html>
- <head>
- <body>
- <%
- int x=10;
- String info="www.baidu.com";
- out.println("<h2>x="+x++ +"</h2>");
- out.println("<h2>info="+info+"</h2>");
- %>
- </body>
- </head>
- </html>
将纯java代码插入到jsp页面中时要放在<%%>中
第二种script<%!%>
主要的功能是定义全局变量、方法、类,假设下面定义方法和类,进行验证
- <%!
- public static final String info="www.baidu.com";
- %>
- <%!
- public int add(int x,int y){
- return x+y;
- }
- %>
- <%!
- class Person{
- private String name;
- private int age;
- public Person(String name,int age){
- this.name=name;
- this.age=age;
- }
- public String toString(){
- return "name="+this.name+";age="+
- this.age;
- }
- }
- %>
- <%
- out.println("<h3>info="+info+"</h3>");
- out.println("<h3>3+5="+add(3,5)+"</h3>");
- out.println("<h3>"+new Person("zhengsan",30)+"</h3>");
- %>
如果现在在<%!%>中定义的是变量的话,那么则表示的是全局变量,每次刷新时都不会重复声明
- <%!
- public static final String info="www.baidu.com";
- int x=10;
- %>
- <%
- out.println("<h2>" + x++ +"</h2>");
- %>
- <%!
- public int add(int x,int y){
- return x+y;
- }
- %>
- <%!
- class Person{
- private String name;
- private int age;
- public Person(String name,int age){
- this.name=name;
- this.age=age;
- }
- public String toString(){
- return "name="+this.name+";age="+
- this.age;
- }
- }
- %>
- <%
- out.println("<h3>info="+info+"</h3>");
- out.println("<h3>3+5="+add(3,5)+"</h3>");
- out.println("<h3>"+new Person("zhengsan",30)+"</h3>");
- %>
一般而言,使用<%!%>的操作都是声明全局常量较多,而所谓的定义方法或定义类基本基本上是不适用的,也没有必要这么去做
第三种 Script: <%=%>
这种Script主要的功能是用于输出的操作,可以输出一个变量或一个具体的内容
- <%
- String info="www";
- int temp=30;
- %>
- <h3>info=<%=info%></h3>
- <h3>temp=<%=temp%></h3>
- <h3>name=<%="zhaoyuqiang"%></h3>
问题: 现在如果要输出之前学习过的out.println,现在又学习了<%=%> 该使用哪一种更好呢?
那么我们说呢 在这种情况下呢 最好是使用<%=%>比较方便。
out.println();这种方法在jsp中完全摒弃掉
下面两个程序是打印表格的,分别用了out.println()和<%=%>两种方法:
- <html>
- <head>
- <title>zhaoyuqiangde javaweb开发</title>
- </head>
- <body>
- <%
- int rows=10;
- int cols=10;
- out.println("<table border=\"1\" width=\"100%\">");
- for(int x=0;x<rows;x++){
- out.println("<tr>");
- for(int y=0;y<cols;y++){
- out.println("<td>"+(x*y)+"</td>"); //用了out.println()
- }
- out.println("</tr>");
- }
- out.println("</table>");
- %>
- </body>
- </html>
这种输出最直接的问题就是HTML代码和java代码完全混合在了一起
而且生成的代码也不舒服,没有缩进
最关键的是jsp的内容是要显示给用户看的,美工是需要修改的,而美工不懂程序,只能使用工具。
- 使用表达式<%=%>
- <html>
- <head>
- <title>zhaoyuqiangde javaweb开发</title>
- </head>
- <body>
- <%
- int rows=10;
- int cols=10;
- %>
- <table border="1" width="100%">
- <%
- for(int x=0;x<rows;x++){
- %>
- <tr>
- <%
- for(int y=0;y<cols;y++){
- %>
- <td bgcolor="#oocc33"><%=x*y%></td>
- <%
- }
- %>
- </tr>
- <%
- }
- %>
- </table>
- </body>
- </html>
此种操作虽然代码复杂了,但是达到了一点,HTML代码页java相分离了
所以一定要注意的是,以后在使用输出的时候,坚决的不再使用out.pirntln(0),而使用<%=%>
在jsp中,这三种方法贯穿始终,可以说是最简单的了