JSP基础知识
JSP是一种运行在服务器端的脚本语言,是用来开发动态网页的技术,它是JAVA Web 程序开发的重要技术。本章介绍JSP技术的相关概念以及如何开发JSP程序,主要内容包括JSP技术简介、JSP的处理过程、JSP语法、JSP的内置对象、每种对象的使用方法和使用技巧,以及简单web应用程序的开发设计。
JSP全称Java Server Pages即 java服务页面,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。
JSP是一种Java servlet【JSP 的本质就是一个servlet】,主要用于实现Java web应用程序的用户界面部分。
它和servelt 一样 可以提供 动态的HTML 响应。 不同的是 Servlet 以java代码为主,
JSP 以 html 为主 然后内嵌少量的java 代码。
一个JSP页面分为以下几部分组成:
一、静态内容:HTML静态文本
二、JSP指令
语法:<%@ %>
include指令:把另外一个文件完全包含入当前文件中
<%@ include file = “ Filename” %>
page指令:通过设置内部的多个属性来定义整个页面的属性
语法:<%@ page 属性1=”属性值” 属性2=”属性值1,属性值2”… 属性n=”属性值n”%>
常用属性:
language:指定JSP页面使用的脚本语言,默认为Java。
import:通过该属性来引用脚本语言中使用得到的类文件。
contentType:用来指定JSP页面所采用的编码方式,默认为text/html。
举例如下:
<% @ page language="java" import="java.util.*,java.text.*" contentType="text/html; charset=GBK" %>
注释:
HTML的注释:
JSP注释:<%– 这也是注释,但客户端不能查看到 –%>
在JSP脚本中注释: <% //单行注释 %>
<% /*多行注释 */ %>
三、JSP脚本元素和内置对象
JSP脚本元素:用来嵌入Java代码的,主要用来实现页面的动态请求
(1)小脚本:在JSP页面里嵌入一段Java代码
语法:<% Java代码 %>
<html>
<%
out.println(30*20);
%>
</html>
(2)表达式:对数据的表示,系统将其作为一个值进行计算和显示
语法:<% = Java表达式/变量 %>
<html>
<%=30*20%>
</html>
(3)方法声明:在JSP页面中定义Java方法
语法:< % ! Java 代码 %>
JSP内置对象:
JSP 内置对象是 Web 容器创建的一组对象
JSP 内置对象是可以直接在JSP页面使用的对象 ,无需使用“new”获取实例
JSP 内置对象的名称是 JSP 的保留字
(1)out对象:用于向客户端输出数据
常用方法:
print():在页面中打印出字符串信息
<%
out.print("hello USTH");
%>
(2)request对象:主要用于处理客户端请求
常用方法:
(3)response对象:用于响应客户请求并向客户端输出信息
常用方法:
void sendRedirect (String location):将请求重新定位到一个不同的URL
(4)session对象:用来存储有关用户会话的所有信息
常用方法:
void setAttribute(String key, Object value):以键/值的方式,将一个对象的值存放到session中
session.setAttribute("name","admin");
Object getAttribute(String key):根据名称去获取session中存放对象的值
String name=(String)session.getAttribute("name");
访问控制就是基于session来完成的。
(5)application对象:类似于系统的“全局变量”,用于实现用户之间的数据共享
常用方法:
void setAttribute(String key, Object value):以键/值的方式,将一个对象的值存放到application中
application.setAttribute("LOGINED_USER",new ArrayList();
Object getAttribute(String key):根据键去获取application中存放对象的值
if(application.getAttribute("LOGINED_USER")!=null){
List loginedUsers = (List) application.getAttribute("LOGINED_USER");
}
四、JSP动作:
包含动作
<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>
转发动作
<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页面的时候,编译器就不认识这些标签,只把这些标签当作文本来处理,虽然编译通过,但是会导致运行时错误。
一、JSP动作
动作是特殊的标记,通过一个动作标记可以实现多行Java代码实现的效果。可以动态插入文件、重用JavaBean组件、导向另一个页面等。
动作元素和指令元素不同,动作元素是在客户端请求时动态执行的,每次有客户端请求时可能都会被执行一次,而指令元素是在编译时被编译执行,它只会被编译一次。
useBean动作用于创建引用,并将现有的Bean组件嵌入JSP。
jsp:useBean>
– useBean动作用于创建引用,并将现有的Bean组件嵌入JSP 。
– useBean的语法:
<jsp:useBean id=”BeanName” class=”BeanClass” scope=”page|request|session|application”/>
例如,<jsp:useBean id=“book” class=“com.web.beans.Book” scope=“page” />
在执行时,Web容器会检查这个JavaBean的对象是否已经存在,如果存在就使用存在的JavaBean对象,反之生成一个新的JavaBean对象。相对于:
<% com.web.beans.Book book=null;
<% com.web.beans.Book book=null;
if(pageContext.getAttribute(“book”)==null){
book=new com.web.beans.Book();
pageContext.setAttribute(“book”,book);
}else{
book=(Book)pageContext.getAttribute(“book”);
}
%>
I jsp实现 <jsp:useBean id=”book” class=”com.csdn.beans.Book” scope=”session”/>
II java代码 Book book=session.getAttribute(“book”);
If(book==null){
Book book=new Book();
Session.setAttribute(“book”,book);
}
Return book;
上面的I II这两个功能一样
setProperty动作用于设置useBean中指定的Bean的属性的值。setProperty动作指定JavaBean的名称、属性名、属性值和参数,用于赋给Bean的属性。
setProperty的语法:
<jsp:setProperty name="BeanAlias"
property="PropertyName" value="Value"
param="Parameter“
/>
Out.println(bean对象.getxxxx()); 具有输出的功能
<jsp:setProperty name=“book” property=“name” value=“Java SE程序设计精讲”/>
等价于<%book.setName(“Java SE程序设计精讲”);%>
(2)<jsp:setProperty name=“book” property=“name” param=“bookName”> 用request对象中的参数bookName的值给JavaBean中的name属性赋值。等价于
<%book.setName(request.getParameter(“bookName”))%>
(3)<jsp:setProperty name=“book” property=“name”>
request对象中的参数名称和JavaBean中属性名一样。等价于<%book.setName(request.getParameter(“name”))%>
星号(*)字符可用于指定Bean的所有属性。
<jsp:setProperty name=“book” property=“*” />
include动作用于将其他HTML页面或JSP页面中的内容合并到当前页面,或将其中的文件插入到当前页面。
不带参数的include动作:
<jsp:include page=”weburl” flush=”true”/>
带参数的include动作:
<jsp:include page=”weburl” flush=”true”>
<jsp:param name=”ParamName” value=”ParamValue”/>
二、JSP有三种注释方式
HTML注释(输出注释):指在客户端查看源代码时能看见注释。例如,
JSP页注释(隐藏注释):指注释虽然写在JSP程序中,但不会发送给客户,因此在客户端查看源代码时不能看见注释。这样的注释在JSP编译时被忽略掉。
<%–this is a JSP comment.it will only be seen in jsp code–%>
Java注释:只能出现在Java代码区中,不允许直接出现在页面中。//单行注释 /多行注释/
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以加QQ(2602138376)
文章标题:JSP基础知识
文章字数:2.4k
本文作者:Zevs
发布时间:2019-09-03, 21:49:18
最后更新:2019-09-04, 18:10:55
原始链接:http://zhsh666.xyz/2019/09/03/JSP基础知识/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。
√本站访问人数:人次 | ◎本站总访问量:
次