什么是JSP?

JSP:Java Server  Page   java服务页面 !


  它和servelt 一样 可以提供 动态的HTML 响应。 不同的是 Servlet 以java代码为主,
  JSP 以 html 为主 然后内嵌少量的java 代码。   


2.JSP 和 Servlet 的关系
  JSP 经过转译 和 编译  最终形成 一个servlet 类  servlet 类经过 构造调用  初始化 
   形成一个servlet 对象,这个servlet 对象可以源源不断 为客户端提供服务。直到
   servlet 对象销毁。
  【JSP 的本质就是一个servlet】


3.JSP 的语法  
  3.1 声明区 
    作用:用来定义变量 或者 定义方法的  
    语法: <%!  这就是声明区  %>

<body>
   <%!
      int  personCount = 80;
      public  String getName(){
    	  return "liweijie";
      }
   %>
   personCount 的值是:<%=personCount %>  <br>
      用户的名字是:<%=getName() %>  
</body>


  3.2 表达式 
    作用: 用来取 变量 或者 对象对应的值的  当然也可以调用方法
    语法: <%=对应的表达式 %> 

例:

   现在的时间是:<%= new  java.util.Date() %>


  3.3 代码块
    作用:用来编写java 代码的 
    语法: <%   在这里编写java 代码 %>  

<body>
  <%
     Date  date = new  Date(); 
     System.out.print(date);
  %>
  <h1>当前的系统时间 </h1>
  <%= date %>  <br>
  Date  date = new  Date(); 
  <hr>
  <% 
      for(int i=0;i<10;i++){
  %>  	  
    	  <h3>test<%=i%></h3>
  <%  	  
      }
  %>  
</body>


  
 4.写一个servlet  把 List<Emp>  这个列表 以table 形式写给浏览器
 Emp 使用随机数构建  构建 10 个Emp对象 放入 List<Emp>。 

<%@page import="java.util.Random"%>
<%@page import="java.util.ArrayList"%>
<%@page import="com.xdl.bean.Emp"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"  errorPage="error.jsp"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
<style type="text/css">
   table {
       width: 600px;
       text-align: center;
       border-collapse: collapse;
   }
   td,table{
       border:1px solid  red;
   }
</style>
</head>
<body>

 <!--  构建一个员工列表  以后可以通过别的组件传递过来 -->

 <%
    List<Emp>  emps = new ArrayList<Emp>();
	Random random  =  new  Random();
	// 使用循环 构建随机数据 
	for(int i=0;i<10;i++){
		Emp  emp = new Emp(i, "e"+random.nextInt(100), random.nextInt(100),
			random.nextInt(10000)*0.88);
		emps.add(emp);
	}
 %>   
 <table>
         <tr><td>编号</td><td>姓名</td><td>年龄</td><td>月薪</td></tr>
         <%
            for(int i=0;i<emps.size();i++){
            	Emp  emp = emps.get(i);
          %>
             <tr><td><%=emp.getId() %></td><td><%=emp.getName() %></td>
             <td><%=emp.getAge() %></td><td><%=emp.getSalary() %></td></tr>
         <%    	
            }
         %>
        
         
 </table>
</body>
</html>


  
 5.JSP 中的注释 
   <!--  标记语言的注释 可以被发送给客户端 --> 
   <%--  JSP 注释  不会发给客户端  --%>
   <%
       // 在代码块中可以使用 java 注释 
       /** 多行注释 */
   %>


  6.JSP 中的指令 
   6.1 指令的语法结构
   <%@指令名    指令属性="值"    指令属性2="值2"   %>


   6.2 JSP 中的三大指令  和 对应的常见属性 
     6.2.1 page 指令    用于导包 和 页面属性的设置 
        import   用于导包
        contentType   页面显示格式和编码设置 
        pageEncoding   页面保存的编码 
        isErrorPage      用来指定是否是错误页面  默认是false 
        errorPage      当页面出错时  通过这个属性可以跳转到对应的错误页面

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"  errorPage="error.jsp"%>

     6.2.2 taglib  指令  标签库指令 用来指定对应的标签库引入 
        prefix    标签库的简写  标签库前缀
        uri   统一资源标识   用来指定标签库的位置  


     6.2.3 include 指令   包含指令  用于包含对应的页面  

<%@include  file="demo1.jsp" %>


        file   用来指定被包含页面的位置路径 
        jsp include指令 又叫 静态包含  它会先把被包含页面的内容加载到对应的页面,
                 再把对应的页面 转换成servlet,这样最终只有一个jsp 变成 servlet。


 7.JSP 中的动作 
   7.1 包含动作 
   <jsp:include   page="被包含页面的路径" >  9
   用来包含指定的 jsp 或者  html 页面,这个包含动作 也叫动态包含。 它会先把被包含页面 
   转换成对应的servlet  然后 再进行包含。所以这样有两个servlet 产生。
  包含页面 还可以向被包含的页面传递参数数据。   使用 <jsp:param  name=""  value="" />

<jsp:include page="demo1.jsp">
    <jsp:param value="liweijie" name="teacherName"/>
</jsp:include>


  
   7.2 转发动作   
   <jsp:forward   转发动作 
   <jsp:param   name=""  value="" />

<jsp:forward page="demo6.jsp">
         <jsp:param value="gggg" name="username"/>
         <jsp:param value="27" name="age"/>
 </jsp:forward>
<body>
    //demo6文件
  <h1> demo6.jsp </h1>
  username:<%=request.getParameter("username") %>
  age:<%=request.getParameter("age") %>
</body>

静态包含命令:<%@include file="xxx.jsp" %>,主页面会把子页面的源代码包含进来,然后整体编译成servlet。

动态包含命令:<jsp:include page="xxx.jsp">,主页面和子页面分别单独编译成相应的servlet。

所以,当子页面的代码发生变化后,通过静态包含命令引入该子页面的主页面需要重新编译。而通过动态命令包含该子页面的主页面就不需要重新编译。举个例子,现在有三个页面,分别为A.jsp,B.jsp和C.jsp。

在A.jsp中,静态包含<%@include file="C.jsp" %>

 

在B.jsp中,动态包含<jsp:include page="C.jsp">

那么,当C.jsp被修改之后,就需要重新编译C.jsp和A.jsp,而B.jsp不需要重新编译。

因此,对于内容会经常发生变化的子页面,通常使用动态包含命令来引用。

jsp页面中,通常需要包含各种标签库,例如:

 

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

 

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>

 

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>

 

<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>

 

为了管理的方便,我们把这部分代码抽出来,放到taglib.jsp中,其他的jsp页面包含taglib.jsp就可以了。这个时候需要特别注意的是,只能使用静态包含。原因是,每个jsp页面都用到了这些标签,如果使用动态包含,那么这些jsp页面和taglib.jsp是分别编译的,编译这些jsp页面的时候,编译器就不认识这些标签,只把这些标签当作文本来处理,虽然编译通过,但是会导致运行时错误。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值