码迷,mamicode.com
首页 > Web开发 > 详细

JSP

时间:2017-11-02 00:00:55      阅读:262      评论:0      收藏:0      [点我收藏+]

标签:util   内置对象   demo   维护   jsp   https   技术   嵌套   开发   

1 什么是jsp?

  • jsp全称是Java Server Page,它和Servlet技术一样,都是sun公司定义的一种用于开发动态web资源的技术。
  • jsp实际上就是Servlet

 

  • jsp这门技术最大的特点在于,写jsp就像在写HTML,但它和HTML相比,HTML只能为用户提供静态的数据,而JSP技术允许在页面中嵌套java代码,为用户提供动态数据。

 

  • 为什么jsp技术也是一种动态的web资源的开发技术?
    • 因为jsp技术允许在页面中嵌套java代码,以产生动态数据,并且web服务器在执行jsp的时候,web服务器会传递web相关的对象给jsp,jsp通过这些对象,可以和浏览器进行交互,所以jsp也是一种动态的web资源的开发技术。  

 

2 HTML、Servlet和jsp

  • HTML:静态页面,不能包含java代码,只能有HTML相关的标记。
  • Servlet:可以写java戴安,做页面的输出,但是输出页面效率实在太低。
  • JSP:有HTML和Servlet的特点,JSP既可以显示页面,也能包含java代码。

 

3 输出当前的时间

<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>显示当前时间</title>
</head>
<body>
    <%=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())%>
</body>
</html>

 

4 JSP的原理和生命周期

  • JSP就是Servlet

技术分享

 

5 JSP的语法

5.1 模板元素

  • JSP中的模板元素是指JSP中的那些HTML。开发的时候先编写模板元素,因为它们决定了页面的布局和外观(前端现在很重要哦)。

 

5.2 java程序片段

  • <%java程序%>,出现在JSP对应的service方法中。

 

5.3 java表达式

  • <%=表达式%>

 

5.4 jsp声明

  • <%! %>
  • 作用:
    • 声明变量,方法和静态方法,但开发中很少使用。因为Servlet是线程不安全。  

 

5.5 jsp的注释

  • <%-- 注释的内容 --%>

 

6 jsp指令

6.1 jsp指令的简介

  • 指令是为jsp引擎设计的,只是告诉jsp引擎如何jsp页面中的其它部分(非指令部分)。
  • 基本语法:<%指令 属性1="值1" 属性2="值2" %>
  • 一般jsp指令都放在页面的顶部,但不是必须的。
  • 指令的属性可以写一个指令中,也可以分开写。
      • <%指令 属性1="值1" 属性2="值2" %>
      • <%指令 属性1="值1" %>
      • <%指令  属性2="值2" %>  

 

6.2 page指令

  • 属性:
    • language:告知引擎,脚本用的是java,默认不写也可以。
    • import:告知引擎,导入那些包。 
    • pageEncoding:告知引擎,翻译jsp时所用的码表。 

 

  • 常用形式:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

 

6.3 include指令(静态包含)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>显示当前时间</title>
</head>
<body>
   <%@include file="demo.jsp"%>
</body>
</html>

技术分享

  • 在翻译之前,先将demo.jsp中的源代码合到index.jsp中,然后直接翻译index.jsp。

 

6.4 taglib指令

  • 导入外部的标签:比如自定义标签以及el和jstl表达式。
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  • 其中:
    • uri:表示外部标签的uri的地址。
    • prefix:表示前缀。

 

7 jsp中的转发和包含

7.1 转发

  • 内置标签
<jsp:forward page="demo.jsp">
      <jsp:param name="name" value="hehe"/>
  </jsp:forward>

 

7.2 包含

  • 静态包含:
<%@include file="demo.jsp"%>
  • 动态包含:
<jsp:include page="demo.jsp"/>

技术分享

 

8 JSP的九大内置对象

jsp隐含对象名称 对应的类型
request javax.servlet.http.HttpServletRequest
response javax.servlet.http.HttpServletResponse
session javax.servlet.http.HttpSession
application javax.servlet.ServletContext
config javax.servlet.ServletConfig
page javax.servlet.http.HttpServlet
exception java.lang.Throwable
out javax.servlet.jsp.JspWriter
pageContext javax.servlet.jsp.PageContext

 

 

 

 

 

 

 

 

9 PageContext

  • 本身就是一个域范围,还能其他3个域对象的范围。
  • 页面范围:
void setAttribute(String name,Object value)
void removeAttribute(String name);
Object getAttribute(String name)

 

10 JSP的最佳实践    

  • 不管是JSP还是Servlet,虽然都可以用于开发动态的web资源,但由于这2个技术各有各的特点,在长期的软件实践中,人们逐渐把Servlet作为web应用中的控制器组件来使用,而把jsp技术作为数据显示模板来使用。
  • 其原因就在意,程序的数据通常要美化后再输出。
  • 让jsp既用java代码产生动态数据,又做美化会导致页面难以维护。
  • 让Servlet既产生数据,又在里面嵌套HTML代码美化数据,同样会导致程序可读性差,难以维护。
  • 因为最好的办法就是根据这2门技术的特点,让它们各自负责各自的擅长的,Servlet只负责响应请求产生数据,并把数据通过转发技术带给jsp,数据的显示由jsp来做。

 

  • 其中,除了jsp/Servlet这种开发模式,还有一种就是使用HTML+Freemaker,这样可以强制的在页面中不让程序员使用java代码。

 

JSP

标签:util   内置对象   demo   维护   jsp   https   技术   嵌套   开发   

原文地址:http://www.cnblogs.com/xuweiweiwoaini/p/7768904.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!