JSP基础语法

注:本文点进链接中例子的JSP文件都在项目目录下(即WEB-INF上级目录下,与WEB-INF同一级)

运行原理及本质
1.用户在浏览器地址栏上输入http://localhost:8080/jspDemo/index.jsp,web服务器判断用户请求的资源是jspDemo应用中的index.jsp页面,web服务器在jspDemo应用中找到index.jsp,启动JSP翻译引擎,将index.jsp翻译成index_jsp.java文件,并且将index_jsp.java文件编译生成index_jsp.class字节码文件,将其存储在Tomcat服务器work目录中。index_jsp.class类继承了HttpJspBase,HttpJspBase继承了HttpServlet,所以JSP本质上就是Servlet,和Servlet完全相同。只有用户第一次访问这个JSP或者JSP页面被修改了,才会重新翻译。JSP有三个阶段:翻译(一次),编译(一次),运行(多次)。JSP更改,不需要重启服务器,也不需要重新部署项目。Jsp和Servlet本质上没有区别,但是JSP和Servlet它们的主要职责是有区别的:JSP主要是提取数据做页面展示,而Servlet主要完成业务逻辑处理以及资源跳转。Servlet是Controller(控制层),JSP是View(展示层)。项目开发中只使用JSP也可以完成开发,因为JSP最终也是一个java类,可以在JSP中编写JDBC等其他程序,但是这样做就违背了设计原则,我们要把的主要职责凸显出来,它的弱点我们还是要尽量避让的。(JSP和Servlet都是单实例多线程的环境下运行的,JSP和Servlet中出现的实例变量、静态变量都会存在线程安全问题。)

2.在JSP文件当中编写的html/css/javascript代码对于jsp来说都是普通字符串,都会被直接输出到浏览器当中,只不过浏览器接收到该代码之后会解释执行。

3.JSP基础语法
      JSP文件以.jsp/.jspx结尾,通常存放在和HTML资源同级目录中,在JSP文件中编写的普通字符串,以后翻译成Servlet程序后直接使用out.write()方法将该字符串响应给浏览器。所以我们必须在JSP文件中编写一些特殊的符号,和jsp文件中的普通文本加以区别,这样jsp引擎就会根据不能的符号将其翻译到Servlet类中的不同位置。

   3.1、scriptlet(小脚本)
      在jsp文件中使用 <%  %>,出现在该符号内的java程序翻译之后会被存放在Servlet的service方法中。

      所以在该符号内只能编写java语句或者定义局部内部类(通常很少使用局部内部类),每一个java语句以“;”结尾,在这个符号中的程序大家就当做在service方法中编程一样。
      在该符号中声明的变量属于局部变量。所以不能使用访问控制权限修饰符修饰。
            3.1.1、小脚本的语法格式:
                <%
                    java语句;
                    java语句;
                    java语句;
                %>
            
            3.1.2、小脚本中的java代码被翻译到Servlet的service方法内部,并且同一个jsp中,小脚本可以编写多个,小脚本在jsp文件当中是有顺序的,    因为service方法中的代码是有先后执行顺序的。
            
            3.1.3、在小脚本中编写什么代码呢?
                在service方法中可以编写的程序,都可以放到小脚本当中。
                
   3.2、declaration(声明)
      在jsp文件中使用<%! %>,出现在该符号内的java程序翻译之后会被存放在和Servlet的service方法并列的位置上。
      所以可以在该符号内声明静态变量、静态方法、静态代码块、实例代码块、实例变量、实例方法,大家就当做在类体中直接编码就可以,所以声明的变量、方法都是可以使用访问控制权限修饰符修饰的。
            3.2.1、声明的语法格式:
                <%!
                    常量
                    静态变量
                    实例变量
                    静态代码块
                    实例代码块
                    构造函数
                    实例方法
                    静态方法
                %>
            
            3.2.2、声明语法中的java代码会自动被翻译到service方法之

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值