JSP入门

一、JSP的介绍


JSP的全称是Java Server Pages,即Java的服务器页面
JSP的主要作用是代替Servlet程序回传HTML页面的数据


二、JSP的本质


JSP页面本质上是一个Servlet程序,第一次访问JSP页面时(运行Tomcat服务器后在浏览器地址栏输入路径),Tomcat服务器会将此JSP页面翻译成为一个Java源文件,并对其进行编译成为.class字节码文件(一个.java,一个.class),当打开.java文件时发现其中的内容是:

而HttpJspBase类直接继承于HttpServlet类,即JSP翻译出来的Java类间接继承于HttpServlet类,证明JSP页面是一个Servlet程序
 

三、JSP的常用脚本

1.声明脚本

格式:<%! java代码 %>

作用:可以写java代码

特点:不会再浏览器的页面中显示出来,仅存在于翻译后的java类中

 
  1. <%--1.声明类属性--%>

  2. <%!

  3. private String name;

  4. private static Map<String, Object> map;

  5. %>

  6. <%--2.声明类方法--%>

  7. <%!

  8. public int sum() {

  9. return 12;

  10. }

  11. %>

  12. <%--3.声明静态代码块--%>

  13. <%!

  14. static {

  15. map = new HashMap<String, Object>();

  16. map.put("key1", "value1");

  17. }

  18. %>

  19. —————————

对应的翻译后的java源文件:

2.表达式脚本 

格式:<%=表达式 %>
作用:在浏览器的JSP页面上输出数据(只有此脚本可以在浏览器的页面上输出数据)
特点:
(1) 所有的表达式脚本都会被翻译到对应的Java类的_jspService()方法中,故表达式脚本可以 直接使用_jspService()方法参数中的对象
(2) 表达式脚本都会被编译后的Java类中的out.print()方法输出到浏览器页面上
(3) 表达式脚本中的表达式不能以分号结束
 

 
  1. <%=22 %> <br/>

  2. <%="可以输出字符串" %> <br/>

  3. <%=map %> <br/>

  4. <%--使用_jspService方法中的对象--%>

  5. <%=request.getParameter("username") %>

 

3. 代码脚本


格式:<% Java语句 %>
作用:在JSP页面中可以编写需要的Java代码
特点:
(1) 代码脚本翻译后都在_jspService方法中,故代码脚本可以直接使用此方法参数中的对象
(2) 可以由多个代码脚本块组合完成一个完整的Java语句
(3) 代码脚本还可以和表达式脚本一起组合使用,在JSP页面上输出数据
 

 
  1. <%--1.if语句--%>

  2. <%

  3. int i = 1;

  4. if (i == 1) {

  5. System.out.println("我爱祖国!");

  6. } else {

  7. System.out.println("我很爱祖国!");

  8. }

  9. %> <br/>

  10. <%--2.for循环语句--%>

  11. <%

  12. for (int j = 0 ; j < 3; j++) {

  13. System.out.println("第" + j + "次循环");

  14. }

  15. %> <br/>

  16. <%--3.使用_jspService方法参数中的对象--%>

  17. <%

  18. String username = request.getParameter("username");

  19. System.out.println("username对应的值为:" + username);

  20. %>

 

 4、JSP九大内置对象

request:请求对象
response:响应对象
pageContext:JSP的上下文对象
session:会话对象
application:ServletContext对象
config:ServletConfig对象
out:JSP输出流对象
page:指向当前JSP的对象
exception:异常对象
 

5、 jsp四大域对象

 域对象是指可以像Map一样存取数据的对象,四个域对象功能一样,只是对数据的存取范围不同

代码演示1:四个域对象存取数据的范围的不同(在web目录下创建scope1.jsp) 

 
  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>

  2. <html>

  3. <head>

  4. <title>scope1</title>

  5. </head>

  6. <body>

  7. <h1>scope1.jsp页面</h1>

  8. <%

  9. //向四个域对象中分别保存数据

  10. pageContext.setAttribute("key", "pageContext");

  11. request.setAttribute("key", "request");

  12. session.setAttribute("key", "session");

  13. application.setAttribute("key", "application");

  14. %>

  15. <%-- <jsp:forward page=""></jsp:forward>是请求转发标签,

  16. page属性设置请求转发的路径 --%>

  17. <jsp:forward page="/scope2.jsp"></jsp:forward>

  18. </body>

 代码演示2:在web目录下创建scope2.jsp

 
  1. <head>

  2. <title>Title</title>

  3. </head>

  4. <body>

  5. <h1>scope2.jsp页面</h1>

  6. <%-- JSP页面中不加任何标签直接输入的内容被write方法输出在浏览器的页面上 --%>

  7. pageContext域是否有值:<%=pageContext.getAttribute("key")%> <br>

  8. request域是否有值:<%=request.getAttribute("key")%> <br>

  9. session域是否有值:<%=session.getAttribute("key")%> <br>

  10. application域是否有值:<%=application.getAttribute("key")%> <br>

  11. </body>

运行结果1:

 运行结果2:

 注意:若四个域对象在使用时范围都可满足要求,则使用的优先顺序是(范围从小到大):
pageContext --> request --> session --> application

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值