介绍思路
一、 jsp基础(概念,执行过程,简单示例)。
二、 jsp语法(基本语法、语法元素的介绍)。
三、 jsp数据库编程(jdbc的介绍)。
四、 JavaBean的应用。
五、 jsp应用中常见问题及常用对象的介绍。
六、 通过一个简单的实例,介绍应用。
七、 简单介绍综合计划中的应用。
一、 JSP基础
(一)JSP概念
JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。
JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。JavaServlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠等特点。
JSP的运行环境:jdk+web服务器(tomcat,WebLogic等)。
(二)JSP执行过程
(三)JSP 示例
jsp文件
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="java.util.*" %>
<HTML>
<BODY>
你好,今天是
<%
Date today=new Date();
%>
<%=today.getDate()%>号,
星期<%=today.getDay()%>
</BODY>
</HTML>
生成的servlet文件对应部分
import java.util.*;
response.setContentType("text/html;charset=gb2312");
out = pageContext.getOut();
out.write(“\r\n\r\n<HTML>\r\n <BODY>\r\n你好,今天是\r\n");
Date today=new Date();
out.print(today.getDate());
out.write("号,星期");
out.print(today.getDay());
out.write(" \r\n</BODY>\r\n</HTML>\r\n ");
n JSP原始代码中包含了JSP元素和Template(模板) data两类
n Template data指的是JSP引擎不处理的部分,即标记<%……%>以外的部分,例如代码中的HTML的内容等,这些数据会直接传送到客户端的浏览器
n JSP元素则是指将由JSP引擎直接处理的部分,这一部分必须符合JSP语法,否则会导致编译错误。
二、 JSP 基本语法
具体内容参见:JSP 动态网站技术入门与提高。
三、 JSP与数据库的应用
具体内容参见:JSP 动态网站技术入门与提高。
四、 JSP常见问题及常用对象
(一)jsp的中文乱码问题
在使用JSP的过程中,最使人头疼的一个问题就是中文乱码问题,以下仅对JSP中出现较多的两种乱码问题。
1、JSP页面乱码
这种乱码的原因是应为没有在页面里指定使用的字符集编码,解决方法:只要在页面开始地方用下面代码指定字符集编码即可。
<%@ page contentType="text/html; charset=gb2312"%>
2、提交表单时出现中文乱码
方法:将传过来的字符以当前默认的编码为字节数组,然后将字节数组再解码为我们需要的字符;例如:中文字符串 str。可以这样出来
str = new String(str.getBytes("ISO-8859-1"),"gb2312")。
(二)Request对象
该对象封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息,即使用该对象可以获取用户提交信息。
request的常用方法:1、getParameter();使用如下 String str=request.getParameter();2,setAttribute();和getAttribute();
(三)Session 对象
1.什么是session:session对象是一个JSP内置对象,它在第一个JSP页面被装载时自动创建,完成会话期管理。
从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间反复连接,反复刷新一个页面,服务器应当通过某种办法知道这是同一个客户,这就需要session对象。
2.session对象的ID:当一个客户首次访问服务器上的一个JSP页面时,JSP引擎产生一个session对象,同时分配一个String类型的ID号,JSP引擎同时将这个ID号发送到客户端,存放在Cookie中,这样session对象和客户之间就建立了一一对应的关系。当客户再访问连接该服务器的其他页面时,不再分配给客户新的session对象,直到客户关闭浏览器后,服务器端该客户的session对象才取消,并且和客户的会话对应关系消失。当客户重新打开浏览器再连接到该服务器时,服务器为该客户再创建一个新的session对象。
3.session对象存在一定时间过期问题,所以存在session中的名值对会在一定时间后失去,可以通过更改session有效时间来避免这种情况。
4.session的主要方法:
在服务器上通过session来区分不同的用户-->session ID:任何连接到服务器上的用户,服务器都会为之分配唯一的不会重复的session ID。
取得session ID的方法:session.getId()
判断是否是新的session:session.isNew()
设置属性:session.setAttribute(String name, Object value)
取得属性:session.getAttribute(String name)
删除属性session.removeAttribute(String name)
用户注销:让用户的session失效
如果session失效,则在session保留的全部操作也将消失
方法: invalidate(),此方法属性一个手工操作的方法
如果session长时间不被使用,则也会自动消失
得到session的创建时间,也就是用户登陆服务器的时间
方法:long getCreationTime()该方法返回一个long类型
取得用户最后一次操作的时间
方法:long getLastAccessedTime()方法出返回一个long类型
(四)Cookie
Cookie是服务器发送给客户端浏览器的体积较小的纯文本信息,以后当用户访问同一个Web服务器时,浏览器会把它们发送给服务器。通过让服务器读取原先保存在客户端的信息,为浏览者提供一系列的方便。例如在线交易过程中标识用户身份,在安全要求不高的场合可避免用户重复输入名字和密码、门户网站的主页定制、有针对性地投放广告等。
Cookie存放在客户端,首先要新建一个Cookie,然后设置其属性,再通过response对象的addCookie()方法将其放入客户端,获取Cookie对象可调用request对象的getcookies()方法。
1.创建Cookie
调用Cookie对象的构造函数可以创建Cookie,构造函数的语法格式如下:
Cookie(String cookiename,String cookievalue)
在函数中,第一个参数cookiename是新建的Cookie对象的名称,第二个参数cookievalue是新建的Cookie对象的值。
Cookie对象的名称和值都不能包含空白字符以及下列字符:[ ] ( ) = , " / ? @ :
2.设置与读取Cookie属性
在把Cookie加入待发送的应答头之前,可以查看或设置Cookie的各种属性。
getComment()/setComment():获取/设置Cookie的注释。
getDomain()/setDomain():获取/设置Cookie适用的域。
getMaxAge()/setMaxAge():获取/设置Cookie过期之前的时间,以秒计。如果不设置该值,则Cookie只在当前会话内有效,即在用户关闭浏览器之前有效,而且这些Cookie不会保存到磁盘上。
getName()/setName():获取/设置Cookie的名称。本质上,名称和值是需要程序员始终关心的两个部分。由于HttpServletRequest的getCookies方法返回的是一个Cookie对象的数组,因此通常要用循环语句来访问这个数组并查找特定名称,然后用getValue()检查它的值。
getPath()/setPath():获取/设置Cookie适用的路径。如果不指定路径,Cookie将返回给当前页面所在目录及其子目录下的所有页面。这里的方法可以用来设定一些条件。例如,someCookie.setPath("/"),此时服务器上的所有页面都可以接收到该Cookie。
getSecure()/setSecure():获取/设置一个boolean值,该值表示Cookie是否只能通过加密的连接(即SSL)发送。
getValue()/setValue():获取/设置Cookie的值。如前所述,名称和值实际上是程序员始终关心的两个方面。不过也有一些例外情况,比如把名称作为逻辑标记(也就是说,如果该名称存在,则表示true)。
getVersion()/setVersion():获取/设置Cookie所遵从的协议版本。默认版本0(遵从原先的Netscape规范);版本1遵从RFC 2109,但尚未得到广泛的支持。
3.将Cookie加入HTTP头中
可将addCookie()方法加入到Set-Cookie应答头。如下所示:
Cookie usernameCookie = new Cookie("username", "dzycsai");
response.addCookie(userCookie);
4.读取Cookie
从客户端读取Cookie时调用的是request对象的getCookies()方法。该方法返回一个与HTTP请求头中的内容对应的Cookie对象数组。得到这个数组之后,一般是用循环语句访问其中的各个元素,并调用getName()检查各个Cookie的名字,直至找到目标Cookie为止;然后对这个目标Cookie调用getValue(),根据获得的结果进行其他处理。