java学习笔记—JSP 1(32)

Servlet做为一个动态网页开发技术太不靠谱。尤其是需要编写一个页面的时候,需要指定页面的模板标签、还要处理很多的业务逻辑。因此比较繁琐。

思考:Servlet为什么写一个页面那么吃力?

主要的原因在于Servlet实在java中写标签。

鉴于以上的原因那么SUN提供了动态网页开发技术之JSP。

JSP即Java Server Page。可见JSP本身是页面,那么在页面那种编写HTML标签应该非常轻松。

一  JSP体验

<body>
   system date: <%=new java.util.Date() %>
</body>

总结:

  1. servlet就是在java中写html比较烦,servlet是做获取参数并请求转发。
  2. jsp就是html中写java比较烦,jsp主要是显示数据。

JSP运行原理

JSP本质是一个Servlet只不过这个Servlet更加善于编写页面。

JSP语法

学习JSP应该从以下几个方面学习:

1  JSP模板元素

JSP是在HTML中写java代码,那么JSP中最基本的是HTML元素。我们将这些元素称之为JSP的模板元素。

2  JSP输出表达式

JSP表达式主要用于输出变量以及输出表达式。

语法:

<%= 表达式 %>
表达式后面不能有分号。

举例1:输出一个表达式。

2>1 = <%= 2>1 %>  <br/>
<%=page %>  <br/>

运行结果

2>1 = true
[email protected]

总结:所有的JSP页面中的输出表达式会被翻译在java类中的_jspService()并使用out.write()方法进行了封装。

该输出表达式还可以输出变量,但是当前需要先定义一个变量。

3  JSP脚本

JSP脚本主要用于定义局部变量和编写JAVA业务代码。

语法:
<%  JAVA代码 %>
举例1:使用JSP脚本定义变量。
<%
   int sum = 0;
%>
sum = <%= sum %><br/>

总结:
JSP脚本被翻译在_jspService()中,使用该语法定义的变量全部是局部变量。因此不能添加任何的变量修饰符。

举例2:使用JSP脚本实现页面的倒三角输出。

<%
    for(int i = 0; i<6; i++){
       for(int j = i; j<6; j++){
%>
       *
    <%
       }
    %>
    <br/>
    <%
    }
    %>

举例3:使用JSP脚本输出H1~H6的各级标题。

<%
     for(int i = 1; i < 7; i++){
%>
      <h<%=i %>>www.itcast.cn</h<%=i %>>
    <%
     }
    %>

总结:

使用JSP脚本是否可以定义方法和类?  方法中不能继续写方法,但是可以定义局部内部类。

举例4:定义局部内部类。

<%
    class Inner{
       public int age = 30;
       public int getSum(){
          return 90;
       }
    }
%>
    <%= new Inner().age %><br/>
    <%= new Inner().getSum() %><br/>

4 JSP声明

JSP声明主要是声明类的成员变量和方法。

语法:

<%! 声明成员 %>

举例1:声明一个成员属性。
···<%
      int x = 20;   // _jspService()
    %>
    <%!
      private int x = 10; // index_jsp.java
    %>
    <%= x %>      // 20
如果必须要访问访问到10,那么可以使用以下的语句
<%= this.x %>       
举例2:定义一个成员方法。
<%!
    public String sayHello(String name){
       return "hello : "+name;
    }
%>
    <%= this.sayHello("jnb") %><br/>
举例3:实现JSP生命周期方法的重写。
<%!
        static {   // 类加载的时候执行
           System.out.println("loading Servlet!");
         }
        private int globalVar = 0;
        public void jspInit() {      // 初始化方法
           System.out.println("initializing jsp!");
        }
        %>
        <%!
        public void jspDestroy() {   // 销毁方法
           System.out.println("destroying jsp!");
        }
        %>
时间: 2024-11-07 22:13:40

java学习笔记—JSP 1(32)的相关文章

java学习笔记3——java关键字

java学习笔记3——java关键字 虽然老师说不用刻意的去记忆,但是我还是在网上找到了非常详细的注解,再次收藏 关键字的类型表: 各个关键字的详细注解和实例,按首字母排序: 1.abstract abstract 关键字可以修改类或方法. abstract 类可以扩展(增加子类),但不能直接实例化. abstract 方法不在声明它的类中实现,但必须在某个子类中重写. -示例- public abstract class MyClass{ } public abstract String my

【Java学习笔记之二十六】深入理解Java匿名内部类

在[Java学习笔记之二十五]初步认知Java内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意的事项.如何初始化匿名内部类.匿名内部类使用的形参为何要为final. 一.使用匿名内部类内部类 匿名内部类由于没有名字,所以它的创建方式有点儿奇怪.创建格式如下: new 父类构造器(参数列表)|实现接口() { //匿名内部类的类体部分 } 在这里我们看到使用匿名内部类我们必须要继承一个父类或者

Java学习笔记之继承

一.继承的基础 在Java术语中,被继承的类叫超类(superclass),继承超类的类叫子类(subclass). 举例说明: 1 class Box 2 { 3 public double width; 4 public double height; 5 public double depth; 6 7 //重载构造方法 8 public Box(Box ob) 9 { 10 width = ob.width; 11 height = ob.height; 12 depth = ob.dep

JAVA学习笔记一(JAVA输出环境变量)

package mytest; import java.util.*;; public class mymain { public static void main(String[] args) { // TODO Auto-generated method stub System.out.print(new Date()); Properties p=System.getProperties(); p.list(System.out); Runtime rt=Runtime.getRuntim

Java学习笔记之接口

一.接口的概念与定义 首先考虑一个简单的接口的定义: public interface Output { int MAX_LINE = 40; void out(); void getData(String msg); } 定义接口使用关键字interface 修饰符interface前面的public可以省略,如果省略,则采用默认访问控制,即只有在相同包结构的代码才可以访问此接口 接口不可以有构造方法(区别于类中的构造方法) 接口里面的所有成员,包括常量.方法等都是public访问权限,所以在

Java学习笔记(2015.7.27~7.31)

Java学习笔记(2015.7.27~7.31) Java 课堂 Java学习笔记(2015.7.27~7.31) 小技巧 常用方法 1.List另一个子类--LinkedList 2.数组的常用方法 3.排序 1.二分法查找 2.数组转换为List 3.可变参数Type ... param (了解) 1.容器Collection 2.自动拆装箱(了解) 3.JDK增强for循环(了解) 4.泛型(掌握) 5.iterator与for在迭代中的区别 1.概念:保存多个对象的对象. 2.JDk为什

Java学习笔记之方法重载,动态方法调度和抽象类

一.方法重载 如果子类中的方法与它的超类中的方法有相同的方法名,则称子类中的方法重载超类中的方法,特别是当超类和子类中的方法名和参数类型都相同时,在子类中调用该方法时,超类中的方法会被隐藏.考虑下面程序: 1 class A 2 { 3 int i, j; 4 A(int a, int b) 5 { 6 i = a; 7 j = b; 8 } 9 10 // display i and j 11 void show() 12 { 13 System.out.println("i and j: &

Java学习笔记——动态代理

所谓动态,也就是说这个东西是可变的,或者说不是一生下来就有的.提到动态就不得不说静态,静态代理,个人觉得是指一个代理在程序中是事先写好的,不能变的,就像上一篇"Java学习笔记--RMI"中的远程代理,其中客户端服务对象就是一个远程服务对象的代理,这个代理可以使得客户在操作时感觉像在操作本地对象一样,远程对象对于客户是透明的.我们可以看出这里的远程代理,是在程序中事先写好的,而本节我们要讨论的远程代理,是由JVM根据反射机制,在程序运行时动态生成的.(以上是本人的理解,如果有不正确的地

Java学习笔记3-操作符

Java基本操作符:+.-.*./.%.=.==.!=.+=.-=. 优先级:先乘除后加减,如果是连接符+号会优先往前匹配,比如 a+++++b,会被解释称 a++ ++ +b,所以会报错,需要自行使用括号隔离为 (a++) + (++b). 对象的引用如果赋值给了对象的引用后,2 个对象将指向同一个引用,有一个对象的引用重新赋值后将同时影响到另一个对象,比如 ClassName classA = new ClassName(); ClassName classB = new ClassName