文档库 最新最全的文档下载
当前位置:文档库 › JSP

JSP

JSP
JSP

1、JSP概述:

JSP(Java Server Pages)由Sun Microsystems公司倡导和许多公司参与共同创建的一种使软件开发者可以响应客户端请求,而动态生成HTML、XML或其他格式文档的Web网页的技术标准。JSP技术是以Java语言作为脚本语言,它在传统的HTML网页文件中插入Java程序段和JSP标记,从而形成JSP文件,JSP网页为整个服务器端的Java库单元提供了一个接口来服务于HTTP的应用程序。JSP编译器先把JSP编译成Java代码写的servlet,然后再由Java编译器来编译成机器码或直接编译成二进制码。JSP页面运行环境主要由三部分组成:JDK、Web服务器、JSP引擎和Servlet引擎。用JSP开发的web应用是跨平台的。

2、JSP页面执行流程:

一个JSP页面可以有多个客户访问,下面是第一个客户访问JSP页面时,JSP页面的执行过程:

①客户通过浏览器向服务器端的JSP页面发送请求。

②JSP引擎检查JSP文件对应的servlet源代码是否存在,若不存在转向第4步,否则执行下一步

③JSP引擎检查JSP页面是否修改,若未修改,转向第5步,否则执行下一步。

④JSP引擎将JSP页面文件转译为servlet源代码(相应的.java代码)。

⑤JSP引擎将servlet源代码编译为相应的字节码(相应的.class代码)

⑥JSP引擎加载字节码到内存。

⑦字节码处理客户请求,并将结果返回给客户。

以上过程如下图所示:

说明:在不修改JSP页面的情况下,除了第一个客户访问JSP页面需要经过以上几个步骤外,以后访问该JSP页面的客户请求,直接被发送给JSP对象的字节码.class文件处理,并将处理结果返回给客户,这种情况下,JSP页面既不需转译也不需编译,JSP页面执行效率非常高。若要使修改后的JSP页面有效,必须重启服务器。

3、JSP文件的部署:

①在tomcat安装目录的webapps目录中新建myapp文件夹。

②在myapp文件夹下编写HelloWorld.jsp如下:

HelloWorld

HelloWorld

③启动tomcat,在浏览器中输入:http://localhost:8080/myapp/HelloWorld.jsp访问该HelloWorld.jsp

4、JSP生命周期:

说明:tomcat中jsp翻译成的java文件会放在tomcat安装目录中的/work/Catalina/localhost 下与项目文件夹同名文件夹下的子文件夹下,如:D:\apache-tomcat-6.0.32\work\Catalina\localhost\myapp\org\apache\jsp\。

5、JSP网页的组成:

(1)、模板数据(Template Data):

静态部分,web容器不作处理,如HTML标签。

(2)、元素:

☆脚本元素。

☆指令元素。

☆动作元素。

6、脚本元素:

(1)、JSP脚本元素的类型:

面的访问,会以HTML文件的形式显示,而访问对应的XML兼容格式时,会以XML文件的形式显示。

(2)、<%!声明%>:

声明语句用于声明方法和变量,对应的XML兼容格式为。例子:

HelloWorld

<%! public long fact(long x){//声明

if(x == 0) return 1;

else return x * fact(x - 1);

}

%>

<% for(long i = 0; i < 20; i++){ %>

<%} %>

xx!
<%=i %><%=fact(i) %>

// 在声明中定义的变量是翻译成相应Java程序的成员变量, 在脚本中定义的变量是相应Java程序的局部变量。

(3)、<%脚本%>:

①普通格式:

在<%%>标签里面写入Java代码,访问时以HTML文件的形式呈现。

示例,编写index.jsp如下:

HelloWorld

<%

String str = "Hello World";

out.println(str);

%>

说明:脚本翻译成对应java程序的代码放在该java程序的_jspService()方法中,因此,在脚本中声明的变量是局部变量。

②XML兼容格式:

标签间写入Java代码,访问时以XML文件的形式呈现。

示例,编写index.jsp如下:

Simple jspx page

String str = "hello" ;

out.println(str) ;

(4)、<%=脚本表达式%>:

脚本表达式用来显示动态生成的结果,对应的XML兼容格式为。不能使用分号作为脚本表达式的结束符,脚本表达式可以是常量,也可以是动态计算出来的值。

示例:

HelloWorld

<%

String str = "Hello World";

%>

<%=str %>

说明:脚本表达式翻译成对应java程序的代码放在该java程序的_jspService()方法中的print()方法中。

(5)、JSP页面的注释:

<%--注释内容--%>//jsp注释,注释内容不会翻译为java代码,浏览器和源码中无法看到。//HTML注释,会翻译为对应的java代码,在浏览器中注释的内容不会显示,查看源代码看得到注释的内容。

<%//%>、<%/**/%>//java注释,会翻译为java代码,但是不作为响应的内容,浏览器和源码中无法看到。

例子,编写以下jsp文件:

HelloWorld

<% String str = "aaa"; %>

<%--<%=str %> --%> //jsp注释

//HTML注释,无法在浏览器中看到,但可在网页源文件中看到

<% //String str2 = "bbb"; %> //java注释

7、JSP指令元素:

JSP指令元素<%@指令类型属性名=”属性值”%>用于提供整个JSP页面的相关信息,用来设定JSP页面的相关属性。

(1)、page指令:

page指令的功能是设定整个JSP页面的属性和相关功能,用于翻译阶段与web容器的通讯。语法:<%@page属性名=”属性值”%>

对应的xml兼容格式语法为:

①page指令的属性:

<%@page contentType="text/html; charset=utf-8" info="aa" %>

<%@page import="java.util.Date"%>

<%@page import="java.text.SimpleDateFormat"%>

pageTest

<%

Date date = new Date();

SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

%>

当前系统时间:<%=sd.format(date) %>


(2)、include指令(静态包含):

include指令用于在JSP编译阶段插入一个包含文本或代码的文件,将文件中的文本静态地包含进当前JSP文件中,如:<%@include file=”hello.jsp”%>。静态包含的文本最好不要有HTML标签和body标签,因为被包含的文件的全部内容将被插入到JSP文件中include指令所在的地方,这些标签会同JSP文件中已有的同样的标签发生冲突,静态包含的文件名不能是变量名且不能传递参数。

例子:

①在Tomcat的webapps文件夹中新建myapp文件夹,并在myapp文件夹中编写include.jsp 如下:

<%@page contentType="text/html; charset=utf-8" %>

include.jsp


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

②在myapp文件夹下编写的a.jsp如下:

<%=request.getParameter("option") %>

a.jsp

③启动tomcat,在浏览器中输入:http://localhost:8080/myapp/inc lude.jsp?option=what访问,查看浏览器显示的效果。

(3)、taglib指令:

taglib指令能让用户在页面中使用自定义的标签。

语法:<%@taglib uri=”uri”prefix=”tagPrefix”%>

对应的xml兼容格式语法为:

8、JSP动作元素:

JSP动作利用XML语法格式的标记来控制Servlet引擎的行为。利用JSP动作可以动态地插入文件、重用JavaBean组件、重定向用户到另外的页面、为java插件生成HTML代码、实现页面与组件的通信。

(1)、动作(动态包含):

语法:,flush为true表示缓冲区满时,自动刷新页面。

例子:

①在Tomcat的webapps文件夹中新建myapp文件夹,并在myapp文件夹中编写include.jsp 如下:

<%@page contentType="text/html; charset=utf-8" %>

<%String str = "str"; %>

include.jsp


②在myapp文件夹下编写的b.jsp如下:

<%String str = "hello"; %>

<%=str %>

b.jsp

③启动tomcat,在浏览器中输入:http://localhost:8080/myapp/include.jsp访问,查看浏览器显示的效果。

(2)、动作(页面转发):

语法:,相当于RequestDispatcher的forward方法, 将请求转发出去。

9、动态包含和静态包含<%@include%>的区别:

☆根本区别在于包含的时机,静态包含是在编译期间包含,而动态包含是在运行期间包含。☆静态包含的是代码,动态包含的只是响应的内容。

☆静态包含适用于包含静态页面,动态包含适用于包含动态页面。

☆静态包含不能传递参数,动态包含可以传递参数。

例子:

①、编写includeTest1.jsp如下:

<%

int i=100;

String str="includeTest1.jsp";

%>

<%=str %>中i值是:<%=i %>

再编写includeTest2.jsp如下:

<%

int i=600;

String str="includeTest2.jsp";

%>

<%=str %>中i值是:<%=i %>

启动tomcat,在浏览器中输入http://localhost:8080/myapp/includeTest1.jsp查看结果如下:includeTest1.jsp中i值是:100

includeTest2.jsp中i值是:600

②、将includeTest1.jsp改为如下:

<%

int i=100;

String str="includeTest1.jsp";

%>

<%=str %>中i值是:<%=i %>

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

将includeTest2.jsp改为如下:

<%=str%>中i值是:<%=i %>

在浏览器中输入:http://localhost:8080/myapp/includeTest1.jsp查看结果如下:

includeTest1.jsp中i值是:100

includeTest1.jsp中i值是:100

③、从上例可知,动态包含时,包含和被包含的文件互不影响,只是将被包含文件编译执

行后的结果放入了包含的文件中;静态包含相当于将被包含的文件中的文本直接放入了包含的文件中,然后编译执行。

10、JSP隐式对象:

隐式对象就是不用实例化,可以直接在JSP页面中使用的对象,如下表所示:

(1)、out对象:

out对象是一个输出缓冲流,用来给客户端返回信息,它是javax.servlet.jsp.JspWriter的一个实例。

out对象常用方法:

☆println():向客户端输出各种类型的数据

☆newLine():输出一个换行符

☆close():关闭输出流

☆flush():输出缓冲区里的数据

☆clearBuffer():清除缓冲区里的数据,同时把数据输出到客户端

☆clear():清除缓冲区里的数据,但不把数据输出到客户端

☆getBufferSize():返回缓冲区的大小

(2)、pageContext对象:

pageContext对象可以获取其他隐式对象、可以实现页面的转发和包含、可以用它对四个作用域空间进行数据的存取,它是javax.servlet.jsp.PageContext的实例。

①pageContext对象获取其他隐式对象:

☆getRequest :获得request隐式对象

☆getResponse:获得response隐式对象

☆getServletConfig:获得config隐式对象

☆getServletContext:获得application隐式对象

☆getPage:获得page隐式对象

☆getSession:获得session隐式对象

②pageContext对象对四个作用域空间进行数据的存取:

pageContext对象提供了四个常量,用来表示四个作用域:

☆PAGE_SCOPE:pageContext作用域,只在当前页面有效

☆REQUEST_SCOPE:request作用域,在forward转发的页面有效

☆SESSION_SCOPE:session作用域,IE浏览器未关闭就一直有效

☆APPLICA TION_SCOPE:application作用域,未重启Tomcat就一直有效。

③pageContext对象实现页面的转发和包含:

pageContext.forward(String relativeURL);//实现页面的转发

pageContext.include(String relativeURL);//实现页面的包含

例1,获取web.xml配置文件中jsp的初始化参数:

先在tomcat安装目录下的webapps目录中新建/myapp/WEB-INF/路径,并在WEB-INF目录中编写web.xml如下:

xmlns="https://www.wendangku.net/doc/7511805423.html,/xml/ns/javaee"

xmlns:xsi="https://www.wendangku.net/doc/7511805423.html,/2001/XMLSchema-instance"

xsi:schemaLocation="https://www.wendangku.net/doc/7511805423.html,/xml/ns/javaee

https://www.wendangku.net/doc/7511805423.html,/xml/ns/javaee/web-app_2_5.xsd">

param

/get.jsp

name

zhangsan

param

/get.jsp

然后在myapp目录中编写get.jsp如下:

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

My JSP 'forward.jsp' starting page

<%!

public void jspInit() {//访问该jsp时执行该方法

System.out.println("初始化");

}

public void jspDestroy() {//该jsp对应的Java程序(servlet)销毁时执行

System.out.println("销毁");

}

%>

<%

String param = config.getInitParameter("name");

//获取web.xml中jsp的初始化参数

out.println("param-value in web.xml is :"+param);

%>

basePath is <%=basePath%>

最后启动tomcat,在浏览器中输入:http://localhost:8080/myapp/get.jsp访问。

例2,在request作用域中传递绑定的对象:

先在tomcat安装目录下的webapps目录中新建myapp目录,然后在myapp目录中编写sendEmp.jsp如下:

<%

request.setAttribute("emp","scott");

%>

继续在myapp目录中编写getEmp.jsp如下:

<%

String emp = (String)pageContext.getAttribute("emp",PageContext.REQUEST_SCOPE);

String emp2 = (String)request.getAttribute("emp");//这句和上句意思一样

out.println(emp+" "+emp2);

%>

启动tomcat,在浏览器中输入:http://localhost:8080/myapp/sendEmp.jsp访问。

JSP个人图书管理系统

课程设计说明书 设计题目:个人图书管理系统 专业:网络工程班级:2010级2班 设计人:王露1001050527 山东科技大学 2013年05月07日

一、需求分析 随着科技的发展,我们的生活越来越倾向于各种各样的无纸化,无纸化办公,无纸化阅读等等,本次的课程设计就是要做一个个人图书管理系统,具备登录功能,用户在输入正确的用户名和密码之后,可以进入个人主页,个人主页功能包括图书的录入、查询、浏览、删除功能,此外,我还添加了一个阅读笔记的功能,用户可以查看以前的阅读笔记,也可以写阅读笔记。 本次课程设计采用的语言是Java,编译环境选择的是Myeclipse,Web服务则是Tomcat6.0,项目框架是Struts2,浏览器选择的是IE。 二、详细设计 2.1 系统流程图 流程图功能介绍: 本次课程设计个人图书管理系统分为五大功能,分别是查询、添加、浏览、删除和阅读笔记功能,如下图2.1所示,首先是登录界面,用户根据提示输入自己的用户名和密码,提交后台LoginAction处理,和数据库中的用户信息表进行验证,验证失败则提示用户名或密码不正确,仍然停留在该登录页面,验证成功则进入个人主页,个人主页上方是欢迎语,左侧会出现上述提到的五大功能,用户可以任选一个并进入相应的页面,五个功能后边我们会一一介绍。

图2.1 系统流程图

2.2 界面规划设计 以下截取了程序设计的主要框架,具体的功能界面会在后边介绍: 图2.2 Action类及项目的基本框架图2.3 Jsp页面及导入的包 2.3 数据库设计 数据库中主要有三个表,分别是Book、Info和Note。Info表中存着用户的用户名和密码,用于登录时对用户信息进行验证;Book 表中存着个人图书管理系统中的书名和图书的相对路径,文件上传时也需要对数据库更新,只需要存储文件的相对路径,极大地节省了数

jsp课程设计—学生管理系统

Jsp课程设计 题目:学生管理系统 学号:1041011109 姓名:何琴 指导老师:姜俊坡

目录 一.概述 (3) 二.系统的结构分析与设计 (3) 2.1 整体设计 (3) 2.2 模块设计 (4) 三.系统的实现 (5) 3.1 登录界面 (5) 3.2 学生信息界面 (6) 3.3 学生信息查询,编辑,新增界面 (7) 3.4 连接数据库 (11) 四.总结................................................................................................. .16

一概述 一直以来学生的成绩管理是学校工作中的一项重要内容,我国的大中专院校的学生成绩管理水平普遍不高。随着办学规模的扩大和招生人数的增加,建立一个成绩维护系统是非常必要的。普通的成绩管理已不能适应时代的发展,因为它浪费了许多的人力和物力。在当今信息时代这种传统的管理方法必然被以计算机为基础的信息管理系统所代替。为了提高成绩管理的效率,我选择了学生成绩管理系统作为课程设计的课题。 本系统在大多数成绩管理系统的基础上,主要增加了教师对成绩的操作,教师改完试卷后不用在往学院的教务处办公室报送成绩,可以直接的把成绩上传到网络上,学生也可以方便快速的查询到自己的成绩,考试后教务管理人员也不必总呆在学院的办公室,他们都不受时间,位置,空间的限制,只要有上网的条件,在家里就可 二系统的结构分析与设计 2.1 整体结构设计 基于系统的使用对象是管理员,系统根据功能需要分为三个模块,即学生基本信息管理、新增学生信息管理和查询学生信息管理。采用B/S模式,jsp+SQL JavaBean 的技术形式实现。 2.1.1 用户角色设计及权限分配 管理员:拥有管理系统所有功能的权限,同时负责系统的用户的增删,服务功能的起停,数据的备份、还原等维护操作; 2.1.2 系统模块设计 学生信息管理系统包括三个基本模块:学生基本信息管理、新增学生信息管理和查询学生信息管理。三个模块管理功能不一,同时相互之间又有联系。 图1 2.1.3 系统运行模式设计 系统采用B/S(Browser/Server)模式,使管理更加方便和简单,B/S结构中各个客户

JSP课程各章节选择题答案

1)如果做动态网站开发,以下()可以作为服务器端脚本语言。 A . HTML B. JSPC. JavaScript D. Java 2)在设计Web项目的目录结构时,一般吧JSP和HTML文件放在()下。 A . src目录 B .文档根目录或其子文件下 WEB-INF 目录 C . META-INT 目录 D 3) 在Web项目的目录结构中,web.xml文件位于()中。 A . src目录 B .文档根目录 C . META-INF 目录 D .WEB-INF 目录 4) 下面对于B/S架构与C/S架构的描述错误的是()。 A . B/S架构解决了C/S架构的弊端,因而在程序开发中将会逐步取代C/S架构 B. B/S机构是基于in ternet网络实现的,使得用户访问的范围扩大 C . C/S架构师基于局域网实现的,当程序发生改的后,需要对每一个客户端进行维护 D . C/S可以设计出丰富的界面,而B/S则相对处于劣势 5)以下选项中()是正确的URL,(选两项) A . B . C . D . /n ews/welcome.html

C . response.setPageCoding() D . response.setCharset() 6) 在某个JSP 页面中存在这样一行代码, <%= 2”+ 4" %>运行该JSP 后,以下说法正 确的是( )。 A .这行代码没有对应的输出 B .这行代码对应的输出时 6 C. 这行代码对应的输出时 24 D .这行代码将引发错误 7) 与 page 指令 <%@ page import= java.util.*, java.text.* %> 等价的是( )。 A . <%@ page import= “java.util.* %> <%@ page import= “java.text.* “ %> B . <%@ page import= “java.util.* ” , import= “java.text.* “ %> C . <%@ page import= “java.util.* “ ; %> <%@ page import= “java.text.* “ ; %> D . <%@ page import= “java.util.* ;java.text.* “ %> 8) 下列选项中, ( )是正确的表达式。 A. <% String s = “hello world ” ;%> B . <% = “hello world ” ;%> C . <% = “hello world ” %> D . <% ! “hello world ” %> 9) 如果请求页面中存在两个单选按钮(假设单选按钮的名称为 sex ) , 分别代表男和女, 该页面提交后,为了获得用户的选择项,可以使用以下( )方法。 A. request.getParameter(sex); B . request.getParameter(“sex ”); C . request.getParameterValues(sex); D . request.getParameterValues(“sex ”); 10) JSP 内置对象request 和getParameterValues()方法的返回值是( )。 B. Object[ ]C . String D . Object 第三章 11) 使用request 对象进行重定向时,使用的是( A . gertRequestDispatcher(); C. sendRedirect() 12) 对于转发与重定向的描述错误的语句是( A ?重定向是在客户端发生作用,通过请求重新的地址实现页面转向 B .使用转发时由于是服务器内部控制权的转移,因而地址栏中的 URL 没有变化 C .使用重定向时可以在地址栏中看到转向后的 URL D .转发与重定向都可以实现在页面跳转,因而没有区别 13) 为了避免服务器的响应信息在浏览器端显示为乱码, 通常会使用 ( )语句重新设置 字符编 码。 B. response.setCharacterEncoding() A . String[ ] )方法。 B . forword() D . setRequestDispatcher(); )。 A . reponse.setContentType();

JSP课程设计个人信息管理系统

1.1业务流程分析 用户需要使用账号与密码通过登陆页面登陆个人信息管理系统,新用户可注册新账号登陆。登陆后进入系统主窗体,可对个人信息管理、备忘录管理、通讯录管理、日记管理、财务管理进行操作。退出系统时返回登陆页面。 1.2系统功能分析 个人信息管理系统主要由:个人信息管理、备忘录管理、通讯录管理、日记管理、财务管理等模块组成。进入该系统后,用户可以对系统中的信息进行添加、修改、删除和查询等操作。包括以下功能: 1)通讯录信息:包括通讯人姓名、联系方式、工作地 点、城市、备注等。 2)备忘录信息:包括什么时间、事件、地点等。

3)日记信息:包括什么时间、地点、事件等。 4)个人财物管理:包括总收入,消费项目、消费金额、消费时间、余额。 每个用户可以自己注册一个用户名,对自己的个人信息进行独立的管理。 1、系统总体设计 2.1个人信息管理系统业务流程图如图2.1所示

2.2个人信息管理系统功能结构图如图2.2所示 2.1系统业务流程图

2 、 在需求分析阶段已经完成系统的所有数据分析。根据该阶段建立的概念模型,已经得出满足第三范式的几个关系描述,此阶段主要的工作就是把前一阶段的成果转化为具体的数据库。 3.1系统的基本E-R图

根据之前的分析规划出的个人信息管理系统实体有:个人信息实体、备忘录实体、通讯录实体、日记实体、财务管理实体。 个人信息实体图如图3.1所示 3.1个人信息实体 备忘录实体图如图3.2所示 3.2备忘录实体

同通讯录实体如图3.3所示 3.3通讯录实体 日记实体如图3.4所示 3.4日记实体 财务管理实体如图3.5所示

学生信息管理系统JSP版(Eclipse)

学生信息管理系统JSP版(Eclipse)1、新建new->Dynamic Web Project->名字为StudentJSP。 2、准备工作 1)编写JSP测试文件,名称为hello.jsp 修改hello.jsp的charset为UTF-8 加入代码:Hello!

代码: <%@page language="java"contentType="text/html; charset=UTF-8" pageEncoding=" UTF-8"%> Insert title here Hello! 附:修改默认字符集步骤: Windows->Preference->Web->JSPfiles->将Encoding改为UTF-8

2)右击项目->Properties->Resurce->修改字符集为UTF-8.

3)右击项目->Properties->Java Build Path改为如图(需先在WEB-INF下新建classes)

4)将MySQL中一个jar包复制到/WEB-INF/lib下,如图: 3、在/WebContent下new一个JSPfile,名字为display0.jsp 代码如下: <%@page language="java"contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@page import="java.sql.*"%> //(注意要引入sql的包) Insert title here <% String connStr = "jdbc:mysql://localhost:3306/yStudent?characterEncoding=utf8"; Connection conn = null; Statement stmt = null; ResultSet rs; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(connStr, "root", "123456"); stmt = conn.createStatement(); } catch (Exception ex) { ex.printStackTrace(); System.out.println("exception in getConnection"); }

JSP企业面试题及答案(选择题)

一、单项选择题: 1.下列哪个不是HTML的常用标记。() A. B. C. D. 2.创建表单的HTML代码是() A.

B. C.