JSP (java服务器页面)

  JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它[1]  是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
  它实现了Html语法中的java扩展(以 <%, %>形式)。JSP与Servlet一样,是在服务器端执行的。通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。
JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 JSP(JavaServer Pages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。
Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。

servlet

  Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。
  狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。
  最早支持Servlet标准的是JavaSoft的Java Web Server,此后,一些其它的基于Java的Web服务器开始支持标准的Servlet。
 

创建第一个项目

  1. 选择Dynamic Web Project  , 模板版本选择2.5

  2. 项目的目录结构, META-INF不用理解 , WEB-INF下lib存放jar包与web.xml文件(必要的配置),服务器响应页面在WebRoot下,如图中index.jsp.

  3. tomcat添加项目,启动tomcat .

JSP基本语法

  例如上例中的index.jsp文件:  

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head> <body>
This is my JSP page. <br>
</body>
</html>

  1.在开始的page中:

    language用来设置脚本语言,jsp中只有java一种

    Language : 用来定义要使用的脚本语言

    contentType:定义 JSP 字符的编码和页面响应的 MIME 类型

    pageEncoding:Jsp 页面的字符编码

    2.scriptlet 标签
    通过 scriptlet 标签我们可以在 Jsp 里嵌入 Java 代码;
 


   第一种:<%! %>
        我们可以在里面定义全局变量、方法、类;

    

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> <%!
String str = "全局变量" ;
%>
<%!
public void func(){
System.out.println("全局方法");
}
%>
<%!
class My{
private int a = 1;
public void f(){
System.out.println("全局类");
}
}
%>
</head> <body>
This is my JSP page. <br>
</body>
</html>

    将上述jsp放入tomcat编译之后:

        

        在tomcat的work目录下寻找到jsp中java代码的编译文件

          


    第二种:<% %>
        我们可以在里面定义局部变量、编写语句;

        与第一种相差不多,具体可以尝试.


    第三种:<%= %>
        我们可以在里面输出一个变量或一个具体内容;

        相当于在页面中输出一段信息,如 <%=b%> 会输出变量b

  3. Jsp 注释

<!-- -->         Html 注释 客户端(在浏览器查看网页源码时)可见
<%-- --%>   Jsp 注释 客户端(在浏览器查看网页源码时)不可见
//       java  单行注释
/*
*/       java 多行注释

  4. Jsp包含指令


    <%@ include file=”要包含的文件”%>

                

        在同级目录下创建MyHtml.html文件,内容只有:

   <body>
My Html page<br>
</body>

      在index.jsp中添加静态包含指令代码:

   <body>
<%@ include file="MyHtml.html" %>
</body>

            启动 tomcat :

    


    <jsp:include page=”要包含的文件”>

           基本操作与上述相差不多,只不过 静态包含先把包含文件加入,再编译运行, 动态包含是先编译,在将包含文件插入 . 在开发中应多使用动态包含.

   5. Jsp 跳转指令

<jsp:forward page=" ">
<jsp:param value=”” name=”” />
</jsp:forward>
服务器内部跳转,可带参数;

例如 , 从form.jsp中带参数跳转至target.jsp 中

              form.jsp :

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'form.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head> <body>
<jsp:forward page="target.jsp">
<jsp:param value="HelloWorld" name="forward"/>
</jsp:forward>
</body>
</html>

            target.jsp :

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'target.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head> <body>
get form jsp: <%=request.getParameter("forward") %>
</body>
</html>

      启动tomcat ,访问 http://127.0.0.1:8000/HelloWorld/form.jsp      (HelloWorld是项目名称)

        


        

最新文章

  1. c#操作MangoDB 之MangoDB CSharp Driver驱动详解
  2. 回发或回调参数无效。在配置中使用 pages enableEventValidation=true 或在页面中使用 %@ Page EnableEventValidation=true % 启用了事件验证
  3. centos 安装mysql
  4. mongodb 3.2存储目录结构说明
  5. 第五篇 Getting Started with ORACLE EBS(开始学习ORACLE EBS)
  6. 网易实习笔试真题C/C++
  7. 使用ckplayer搭建rtmp视频直播应用
  8. Hibernate学习笔记--第一个Hibernate框架程序
  9. Rust这个新的语言
  10. A - Bi-shoe and Phi-shoe (欧拉函数打表)
  11. 谈谈Ext JS的组件——布局的使用方法
  12. [转]AI+RPA 融合更智能
  13. [Go] golang的range循环遍历通道
  14. C# 电脑上提示未知发布者
  15. quick Cocos 2dx 学习网站
  16. 《CSS世界》读书笔记(六)
  17. 复习-css常用伪类别属性
  18. (第1篇)什么是hadoop大数据?我又为什么要写这篇文章?
  19. js 字符串加密解密
  20. Spring Batch 简介

热门文章

  1. CentOS6.5 安装Storm集群
  2. \r\n 回车换行浅析
  3. 数据加密之MD5加密
  4. 闪存卡被创建pv报错
  5. PHP socket通信之UDP
  6. 《2017年Q2中国城市研究报告
  7. H5 dom元素保存为图片
  8. HTML-CSS线性渐变
  9. Python记录6:函数2,函数参数
  10. 运行vs时打开一个浏览器窗口,而不是在原有窗口上打开一个标签