JSP的基本概念
JSP声明:用于定义JSP中变量、方法以及静态方法。本质上说它与Java中定义一个全局变量、公共方法一样。JSP声明的变量和方法是可以在整个JSP页面中使用的。
JSP表达式:是将动态信息显示在页面中,常用书写格式为<%=变量或表达式%>。注意:通过客户端观看网页源代码,可以发现:JSP页面中HTML元素在源代码中均被保留,只有Java代码会有改变。
JSP指令: JSP指令包括:page,include, taglib。
page:用来设置JSP页面的属性和相关功能,常用书写格式为<%page attribute=”value”%>。page有多个属性,用的最多的是:
language:JSP页面使用语言,目前是Java,默认也是Java语言;
import:声明需要导入的包;
pageEncoding:设置页面的编码;
include:在标签处插入文件,可以是JSP,HTML, js等,与当前文件组合成新的JSP页面。
这边注意一点:include指定<%@include file=”URL”%>跟后面JSP动作<jsp:includepage=”URL” flush=”true”/>的关系:(1)include指令是由JSP引擎在编译时导入,而jsp:include动作是在页面被访问时导入的;(2)include指令会跟主页面一块被编译为一个Servlet类文件,而jsp:include动作包含的文件跟主页面是相对独立的两个文件,会编译出两个Servlet文件,所以效率上相对慢些。
tglib 指令暂时没整理(后面来补充)
JSP动作:JSP中一共有13个动作,其中<jsp:include>,<jsp:forward>, <jsp:param>使用相对较多,下面就这三个简单说明:
<jsp:include>: 常用书写格式为<jsp:includepage=”relative URL” flush=”true”/> ,其他前面已经说了,这里不在赘述。
实践出真知。
<jsp:forward>:常用书写格式为<jsp:forwardpage=””relative URL”> 作用是转发请求到另一个页面中去,在这过程中请求的参数会一起被转发到目标页面中去。在目标页面中通过request.getParameter(”**”)方法来获得参数进行下一步处理。
有两个情况提醒注意:(1)尽管页面发生跳转,但是在浏览器中地址依然为原来地址,请求具有隐蔽性。(2)<jsp:forward>里的URL只能是同一个Web应用里的文件。
<jsp:param>:书写格式<jsp:paramname=”参数名称” value=”参数值”>
第一段代码:注意<jsp:include>的用法,和其中防止中文乱码,做的调整
<span style="font-size: 10px;"><%--HanChun at XiDian University--%>
<%--MyJsp1.jsp--%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%request.setCharacterEncoding("utf-8");//页面传递参数编码方式,不设置可能会出现乱码问题 %>
<html>
<head>
<title>WELCOME TO JSP</title>
</head>
<body>
<jsp:include page="SubMyJsp1.jsp">
<jsp:param value="红烧肉" name="最爱吃"/>
</jsp:include>
</body>
</html></span>
<%--HanChun at XiDian University--%>
<%--SubMyJsp1.jsp --%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%
String cai = request.getParameter("最爱吃");
%>
<html>
<head>
<title>WELCOME TO JSP</title>
</head>
<body>
<%="最爱吃的菜:"+cai%></br>
</body>
</html>
页面结果: 最爱吃的菜:红烧肉
第二段代码:注意<jsp:forword>和<jsp:param>的用法,和其中防止中文乱码,做的调整
<span style="font-size:10px;"><%--HanChun at XiDian University--%>
<%--MyJsp2.jsp--%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%request.setCharacterEncoding("utf-8");//页面传递参数编码方式,不设置可能会出现乱码问题 %>
<html>
<head>
<title>WELCOME TO JSP</title>
</head>
<body>
<jsp:forward page="SubMyJsp2.jsp">
<jsp:param value="红烧肉" name="最爱吃"/>
</jsp:forward>
</body>
</html>
</span>
<span style="font-size:10px;"><%--HanChun at XiDian University--%>
<%--SubMyJsp2.jsp--%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%
String cai = request.getParameter("最爱吃");
%>
<html>
<head>
<title>WELCOME TO JSP</title>
</head>
<body>
<%="最爱吃的菜dfgd:"+cai%>
</body>
</html></span><span style="font-size: 14px;">
</span>
页面结果同上
补充解释一些HTML基础知识:
头meta信息,是指在HTML页面中存在于<head></head>之间的信息常见如下:
<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">
设定像搜索引擎说明网页主要内容;
JSP内置对象:
内置对象是说,JSP页面使用前不需要声明他们,可以拿来直接使用。有七个内置对象分别是:request, response, session, application, out, page, config;需要说明的是,这部分知识看书是没太大用的,有个大概印象就好。具体开发中遇到了,查阅手册,其实更准确说,用多了,用熟了,就那几个。
request对象:
可以简单这样理解,用户请求访问一个页面,就会产生一个request对象,这个实类中包含客户请求的所有数据。服务器端就可以通过request对象来获取到客户端发送的信息,如IP地址,传递的参数,服务器主机名称等等。
response对象:
前面说的request对象,与此相应response是服务器端像客户端回应的实类。
session对象:
session对象用的非常多。我们知道HTTP协议是无状态的协议,每次用户接收到服务器相应后他们之间的连接就关闭了。这是,session就起了关键作用。注意两种Cookie概念很重要。
application对象:
application对象实现的接口为javax.servlet.ServletContext,它的生命周期从application对象的创立到应用服务器关闭。可以把它理解成是Web应用程序的全局变量,理所当然,服务器关闭,其中保存信息也就消失了。
out对象:
它包含了很多io流中的方法,用的比较多的是输出内容到HTML中。
page对象:
page对象代表的是当前JSP页面本身。
鉴于文章太长,下面单独出一篇文章《典型注册页面JSP实现》,详细的分析下JSP技术前因后果。