java jsp基础介绍
1 Jsp基础
1.1 Jsp介绍
JSP(全称Java Server Pages)是一种web动态网页开发技术,通过标签和指令完成用户界面开发和交互操作。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。具有跨平台(linux和window)、动态嵌入性能好、兼容java Servlet API的特点。
1.2 Jsp运行环境
安装jdk和tomcat,执行startup脚本,启动tomcat服务器。在tomcat根目录下有个\webapps\ROOT文件夹,将jsp文件复制到该文件夹下。在;浏览器中输入如下地址http://localhost:8080/test.jsp。就可以访问该jsp文件。或者在eclipse中"File-->New-->Dynamic Web Project",创建 TomcatTest 项目,关联tomcat服务器。在WebContent文件夹下新建一个test.jsp文件。如果之前调用了startup脚本开启了服务,则先关闭服务器,否则会出现服务启动不了,端口冲突的错误。直接在eclipse中用run on server菜单按钮启动tomcat服务器和程序。
1.3 Jsp服务器响应客户端请求的过程
(1) 客户端发起request请求。
(2) Web服务器识别出这是一个jsp请求,将请求传递给 JSP 引擎。
(3) Jsp引擎从磁盘中载入jsp文件,转化为.java文件,编译为servlet.class文件。
(4) 调用servlet引擎,载入并执行servlet类,创建实例并执行初始化方法,jsp引擎执行_jspService()方法,servlet产生HTML格式的输出,并且嵌入HTTP response中上交给web服务器。
(5) Web服务器以静态HTML网页的形式将HTTP response返回到您的浏览器中。
(6) 浏览器产生HTML网页界面。
1.4 Jsp语法
1.4.1 脚本程序
脚本程序包含在<%%>中间,可以包含任意有效的Java语句、变量、方法或表达式。与其等价的XML语句<jsp:scriptlet> 代码片段</jsp:scriptlet>。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>汉字编码格式
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
Hello World!<br/>
<%
out.println("你的 IP 地址 " + request.getRemoteAddr());//脚本程序
%>
</body>
</html>
1.4.2 Jsp申明
用<%!变量;%>来声明一个或多个变量、方法,供后面的Java代码使用。用分号隔开。
JSP声明的语法格式:
<%! declaration; [ declaration; ]+ ... %>
或者,您也可以编写与其等价的XML语句,就像下面这样:
<jsp:declaration>
代码片段
</jsp:declaration>
程序示例:
<%! int i = 0; %>
<%! int a, b, c; %>
<%! Circle a = new Circle(2.0); %>
1.4.3 Jsp表达式
用<%=表达式%>来包含一个表达式,表达式不能用分号。
<body>
<p>
今天的日期是: <%= (new java.util.Date()).toLocaleString()%>
</p>
</body>
1.4.4 Jsp注释
<%-- 注释 --%> JSP注释,注释内容不会被发送至浏览器甚至不会被编译
<!-- 注释 --> HTML注释,通过浏览器查看网页源代码时可以看见注释内容
<\% 代表静态 <%常量
%\> 代表静态 %> 常量
\' 在属性中使用的单引号
\" 在属性中使用的双引号
1.4.5 Jsp三个指令
Jsp有三个指令:page设置属性,include包含文件,taglib指定标签库;JSP指令格式:<%@ directive {attribute=value}* %>(<%@ 指令名称 属性1=“属性值1” 属性2=“属性值2”。。。%>)
(1) page设置属性
设置页面的属性,例如编码方式,缓冲区大小等
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
buffer |
指定out对象使用缓冲区的大小 |
autoFlush |
控制out对象的 缓存区 |
contentType |
指定当前JSP页面的MIME类型和字符编码 |
errorPage |
指定当JSP页面发生异常时需要转向的错误处理页面 |
isErrorPage |
指定当前页面是否可以作为另一个JSP页面的错误处理页面 |
extends |
指定servlet从哪一个类继承 |
import |
导入要使用的Java类 |
info |
定义JSP页面的描述信息 |
isThreadSafe |
指定对JSP页面的访问是否为线程安全 |
language |
定义JSP页面所用的脚本语言,默认是Java |
session |
指定JSP页面是否使用session |
isELIgnored |
指定是否执行EL表达式 |
isScriptingEnabled |
确定脚本元素能否被使用 |
(2) include包含文件
将其他jsp文件包含进来,实现文件的复用,例如网页的导航栏和页脚信息。
<%@ include file="relativeURL"%> relativeURL:指向另一个JSP文件或者HTML文件的路径,例如,网址内所有页面均有一个统一风格的导航栏和页脚版权,那么就可以使用该指令将其包含进来。静态包含,在翻译时就把两个文件合并。
(3) Taglib指令包含标签
JSP API允许用户自定义标签,一个自定义标签库就是自定义标签的集合。
Taglib指令引入一个自定义标签集合的定义,包括库路径、自定义标签。
Taglib指令的语法:
<%@ taglib uri="uri" prefix="prefixOfTag" %>
uri属性确定标签库的位置,prefix属性指定标签库的前缀。
等价的XML语法:
<jsp:directive.taglib uri="uri" prefix="prefixOfTag" />
1.4.6 Jsp动作元素
Jsp动作元素是以xml格式的指令,实现动态地插入文件、重用JavaBean组件、把用户重定向到另外的页面、为Java插件生成HTML代码等功能。
jsp:include |
在页面被请求的时候引入一个文件。 |
jsp:useBean |
寻找或者实例化一个JavaBean。 |
jsp:setProperty |
设置JavaBean的属性。 |
jsp:getProperty |
输出某个JavaBean的属性。 |
jsp:forward |
把请求转到一个新的页面。 |
jsp:plugin |
根据浏览器类型为Java插件生成OBJECT或EMBED标记。 |
jsp:element |
定义动态XML元素 |
jsp:attribute |
设置动态定义的XML元素属性。 |
jsp:body |
设置动态定义的XML元素内容。 |
jsp:text |
在JSP页面和文档中使用写入文本的模板 |
(1)<jsp:include>包含子jsp文件
将子jsp文件包含在主jsp文件中,浏览器访问主jsp文件时,会将主jsp文件转换编译为class文件,然后执行到include动作标识时,将请求转发给子jsp文件,jsp引擎将子jsp文件转换编译为另外一个class文件,执行子class文件后,返回到主class文件中执行后面的代码。Jsp引擎生成了两个class文件。主jsp文件如果不改动,则无需重新编译。子jsp文件如果经常改动,则只重新编译子jsp文件。
而include指令,被包含的文件的内容会原封不动地插入到包含页中使用该指令地位置,然后JSP编译器再对这个合成的文件进行编译,最终编译成的文件只有一个,被包含文件、包含文件中不能有重名的变量或方法。 如果子jsp文件经常改动,则需要重新编译文件。
语法格式如下:
<jsp:include page="相对 URL 地址" flush="true" />
page 包含在页面中的相对URL地址。
flush 布尔属性,定义在包含资源前是否刷新缓存区。
<jsp:include page="date.jsp" flush="true" />
(2)java bean操作
jsp:useBean 动作用来加载一个JavaBean。jsp:setProperty用来设置已经实例化的Bean对象的属性。jsp:getProperty动作提取指定Bean属性的值,转换成字符串,然后输出。这三个动作元素实现javabean的操作。
jsp:useBean有三个属性:
class |
指定Bean的完整包名。 |
type |
指定将引用该对象变量的类型。 |
beanName |
通过 java.beans.Beans 的 instantiate() 方法指定Bean的名字。 |
jsp:setProperty属性:
name |
name属性是必需的。它表示要设置属性的是哪个Bean。 |
property |
property属性是必需的。它表示要设置哪个属性。有一个特殊用法:如果property的值是"*",表示所有名字和Bean属性名字匹配的请求参数都将被传递给相应的属性set方法。 |
value |
value 属性是可选的。该属性用来指定Bean属性的值。字符串数据会在目标类中通过标准的valueOf方法自动转换成数字、boolean、Boolean、 byte、Byte、char、Character。例如,boolean和Boolean类型的属性值(比如"true")通过 Boolean.valueOf转换,int和Integer类型的属性值(比如"42")通过Integer.valueOf转换。 value和param不能同时使用,但可以使用其中任意一个。 |
param |
param 是可选的。它指定用哪个请求参数作为Bean属性的值。如果当前请求没有参数,则什么事情也不做,系统不会把null传递给Bean属性的set方法。因此,你可以让Bean自己提供默认属性值,只有当请求参数明确指定了新值时才修改默认属性值。 |
jsp:getProperty属性
name |
要检索的Bean属性名称。Bean必须已定义。 |
property |
表示要提取Bean属性的值 |
应用实例
先创建一个java文件如下,编译为class文件。
package com.runoob.main;
public class TestBean {
private String message = "菜鸟教程";
public String getMessage() {
return(message);
}
public void setMessage(String message) {
this.message = message;
}
}
Jsp文件内容
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
<h2>Jsp 使用 JavaBean 实例</h2>
<jsp:useBean id="test" class="com.runoob.main.TestBean" />
<jsp:setProperty name="test"
property="message"
value="菜鸟教程..." />
<p>输出信息....</p>
<jsp:getProperty name="test" property="message" />
</body>
</html>
(4)<jsp:forward>跳转
jsp:forward动作把请求转到另外的页面。jsp:forward标记只有一个属性page。语法格式如下所示: <jsp:forward page="相对 URL 地址" />。例如<jsp:forward page="date.jsp" />
(5)jsp:plugin 插件动作
jsp:plugin动作用来根据浏览器的类型,插入通过Java插件 运行Java Applet所必需的OBJECT或EMBED元素。如果需要的插件不存在,它会下载插件,然后执行Java组件。 Java组件可以是一个applet或一个JavaBean。 plugin动作有多个对应HTML元素的属性用于格式化Java 组件。param元素可用于向Applet 或 Bean 传递参数。
以下是使用plugin 动作元素的典型实例:
<jsp:plugin type="applet" codebase="dirname" code="MyApplet.class"
width="60" height="80">
<jsp:param name="fontcolor" value="red" />
<jsp:param name="background" value="black" />
<jsp:fallback>
Unable to initialize Java Plugin
</jsp:fallback>
</jsp:plugin>
(6)动态加入xml
<jsp:element> 定义xml元素、 <jsp:attribute>定义xml属性、 <jsp:body>定义元素体,三个动作元素能够动态的插入,动作元素动态定义XML元素。动态是非常重要的,这就意味着XML元素在编译时是动态生成的而非静态。
以下实例动态定义了XML元素:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
<jsp:element name="xmlElement">
<jsp:attribute name="xmlElementAttr">
属性值
</jsp:attribute>
<jsp:body>
XML 元素的主体
</jsp:body>
</jsp:element>
</body>
</html>
自己编了一个股票监控软件,有如下功能,有兴趣的朋友可以下载;
(1) 个股监测。监测个股实时变化,可以监测个股大单交易、急速拉升和下降、主力入场和出场、股票最高点和最低点提醒。检测到最高点、最低点、主力进场点、主力退场点、急速拉升点、急速下跌点,给出语音或者声音提醒,不用再时刻看着大盘了,给你更多自由的时间;
(2) 大盘监测。监测大盘的走势,采用上证、深证、创业三大指数的综合指数作为大盘走势。并实时监测大盘的最高点和最低点、中间的转折点。
(3) 股票推荐。还能根据历史数据长期或短期走势进行分析,对股市3千多个股票进行分析对比,选出涨势良好的股票,按照增长速度从大到小排序,推荐给你涨势良好的股票;
下载地址:
1.0.3版本(修复大盘指数崩溃缺陷)下载地址:
链接:https://pan.baidu.com/s/1BJcTp-kdniM7VE9K5Kd3vg 提取码:003h
更新链接:
https://www.cnblogs.com/bclshuai/p/10621613.html
java jsp基础介绍的更多相关文章
- java学习笔记(1)java的基础介绍 、JDK下载、配置环境变量、运行java程序
java工程师是开发软件的 什么是软件呢? 计算机包括两部分: 硬件: 鼠标.键盘.显示器.主机箱内部的cpu.内存条.硬盘等 软件: 软件包括:系统软件和应用软件 系统软件:直接和硬件交互的软件:w ...
- Java基础学习总结(一)——Java开发学习介绍
Java平台: 1.J2SE java开发平台标准版 2.J2EE java开发费平台企业版 Java程序需要在虚拟机上才可以运行,换言之只要有虚拟机的系统都可以运行java程序.不同的系统上要安装对 ...
- java web学习总结(二十七) -------------------JSP标签介绍
一.JSP标签介绍 JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护. 二.JSP常用标签 ...
- java基础介绍(转)
很全面的介绍JAVA基础的文档 Java 编程简介,第 1 部分: Java 语言基础 http://www.ibm.com/developerworks/cn/java/j-introtojava1 ...
- Java学习-033-JavaWeb_002 -- 网页标记语言JSP基础知识
JSP 是 Sun 公司提倡的一门网页技术标准.在 HTML 文件中,加入 Java 代码就构成了 JSP 网页,当 Web 服务器访问 JSP 请求的时候,首先执行其中的 Java 程序源码,然后以 ...
- 085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用
085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用 本文知识点:构造方法调用 说明:因为时间紧张,本人写博客过程中只是 ...
- 084 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 03 构造方法-this关键字
084 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 03 构造方法-this关键字 本文知识点:构造方法-this关键字 说明:因为时间紧 ...
- 083 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 02 构造方法-带参构造方法
083 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 02 构造方法-带参构造方法 本文知识点:构造方法-带参构造方法 说明:因为时间紧张, ...
- 082 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 01 构造方法-无参构造方法
082 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 01 构造方法-无参构造方法 本文知识点:构造方法-无参构造方法 说明:因为时间紧张, ...
随机推荐
- VC++ warning C4819 的解决方法(转)
编译VC++程序的时候出现如下提示警告: warning C4819: The file contains a character that cannot be represented in the ...
- javascript中对编码的解读
首先来一下js知识的巩固与复习 js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,deco ...
- 记录-Intellij Idea下以Tomcat运行Web项目时的位置问题
今天本来准备把原来的一个Web项目导入到Idea下,之前这个项目是用eclipse写的,容器用的tomcat,首先导入前我把一些没用的配置文件都给删了,像什么.eclipse..setting什么的, ...
- 入坑django2
数据模型 关于时间的字段设置 add_date = models.DateTimeField('保存日期',default = timezone.now) mod_date = models.Date ...
- Java并发与多线程
1. 并发与并行 并发是指某个时间段内,多任务交替处理的能力:并行是指同时处理多任务的能力,多核CPU可以实现并行任务. 并发执行的特点: (1)并发程序间相互制约:程序执行结果的相互依赖以及共享资源 ...
- NETGEAR 系列路由器命令执行漏洞简析
NETGEAR 系列路由器命令执行漏洞简析 2016年12月7日,国外网站exploit-db上爆出一个关于NETGEAR R7000路由器的命令注入漏洞.一时间,各路人马开始忙碌起来.厂商忙于声明和 ...
- 详解python中的生成器表达式
什么是生成器表达式 还记得列表解析吗?我们把[]换成()就变成生成器表达式了. g = (x for x in [1, 2, 3, 4]) print(g) # <generator objec ...
- python自动生成excel(xlwt库)
下面代码使用web.py框架,其他框架都大同小异. # coding: utf- import web import json import datetime import xlwt import S ...
- linux基础—课堂随笔08_进程(转)
进程优先级 命令 pstree -p 显示各个子线程 ps 进程状态(process state) UNIX风格:ps -ef BSD风格:ps aux 还有用到o参数,选项显示定制的信息: pid. ...
- Asp.Net Zero通用打印实现
Asp.Net Zero是一款非常优秀的web框架,可以用来快速构建业务系统.框架满足了业务系统所需的大部分通用功能,但是系统必须的打印报表功能一直没有实现.下面给大家介绍如何在zero中集成打印功能 ...