jsp基础知识学习

时间:2024.5.15

万高石材:/index.php 组装电脑:

2000元电脑配置单:

Javaee是一个开放的平台,它包括很多技术,主要有十三种。

① java数据库连接(jdbc)

② java命名和目录接口(jndi)

③ 企业java bean (ejb)

④ Javaserver pages (jsp)

⑤ Java servlets

⑥ Java idl/corba

⑦ Java事物体系(jta)/java事物服务(jts)

⑧ Javamail和javabeans激活架构(jaf)

⑨ Java信使服务(jms)

⑩ 扩展标记语言(xml)

struts +spring+hibernate (ssh)

jsp=html+java片段+jsp标签+javascript+css

jsp标签(基本语法)

指令元素

用于从jsp发送一个信息到容器,比如设置全局变量,文字编码,引入包等

1.page指令

<%@page contentType=” text/html;charset=gb2312 ” %>

2.include指令

<%@include file=”filename ”%>

3.taglib指令—这个指令允许在jsp页面使用自定义的标签

<myTag:yourTagnuml=”123”>

脚本元素

在一定程度上可以理解就是java的片段script

1. script <%java 代码%>

2. 表达式 <%=java表达式%> <%=rs.getString(1)%>

3. declaration声明

<%!变量声明%> 比如:<%! Int count=10%>

<%! 函数声明%>

<%! Int jisuan(int num){

Int result=0;

For(int i=0;i<num;i++){

Result=result+I;

}

}

%>

动作元素

动作元素是使用xml语法写的jsp规定的一系列标准动作,在容器处理jsp时,当容器遇到动作元素时,就执行相应的操作

万高石材:/index.php 组装电脑:

2000元电脑配置单:

1.<jsp:userBean> //创建一个javabean实例

2.<jsp:setProperty> //给一个javabean实例设置初始值

3.<jsp:param> //给一个jsp设置参数,常常与<jsp:include>结合使用

<jsp:include file=”info.jsp”>

<jsp: param name=”paramenter1” value=”parameterVale”/>

<jsp: param name=”paramenter2” value=”parameterVale”/>

</jsp:include>

4.<jsp:getProperty> //取得一个javabean实例的成员变量

5.<jsp:include> //引入另外一个文件

6.<jsp:plugin> //使用插件

7.<jsp:forward> //转发

8.<jsp:fallback> //

Jsp的九大内置对象

① out //向客户端输出数据,字节流

out.println(“”);

② request //接受客户端的http请求

getParameter(String name) //name表示表单的参数名

getParameter Values(String name) //使用得到是String[]

setAttrubute(String name,Object obj);//设置名字为name的obj,值为obj

getAttrubute(String name);//返回由name指定的属性值,如果不存在就返回null

getCookie();

③ response //封装jsp的产生的回应

④ session //用于保存用户的信息,跟踪用户的行为

⑤ application //多个页面用于共享对象,可以做计数器

⑥ pageContext //代表jsp页面的上下文

⑦ exception //代表运行时的一个异常

getMessage();

⑧ page //代表jsp这个实例本身

⑨ config //代表jsp对应的servlet的配置,可以得到web.xml中的参数

访问jsp的过程

如果是第一个访问,jsp文件会被服务器翻译成一个对应的java文件(servlet),然后,再被翻译成 .class文件并加载到内存中。如果是以后访问jsp,那就直接调用内存中的jsp实例,所以,第一次访问jsp慢,后面访问jsp的速度就会变快了。

Java片段是被 <%%>包起来的

代码后退

整体选中 用tab

代码向前

整体选中 用shift+tab

万高石材:/index.php 组装电脑:

2000元电脑配置单:

Ide: 集成开发环境

框架图

项目中有多少个文件,文件之间的关系

在jsp中引入java包

<%@ page language=”java” import =”java.util.*, java.sql.*” ….%>

一段很重要的代码

ResultSet rs=sm.executeQuery("

select top 1 pswd from users where uname='"+username+"'");

mvc模式

模型(M)视图(V)控制器(C)

MVC是一个设计模式,它强制性的使应用程序的输入,处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。

M主要由 java.class 来做,也可以是java bean、ejb等

V 由 jsp来做

C由servlet来做

转向 Response.sendRedirect(); 效率不高

转发 request.getRequestDispatcher(“wel.jsp”).forward(request,response); //它的效率高,同时request中的对象还可以在下一页面使用

向request中放入东西

request.setAttribute("result", al);

request.setAttribute("pageCount", pageCount+"");

从request中取出东西

ArrayList al=(ArrayList)request.getAttribute("result"); String

s_pageCount=(String)request.getAttribute("pageCount");

MVC的处理过程:

首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后调用模型用来处理用户的请求并返回数据,最后控制器用相应的视图显示模型返回的数据,并通过浏览器呈现给用户。

MVC的缺点:

1. 工作量大了

2. 不适用小型项目

3. 调试应用程序难度加大

Session

万高石材:/index.php 组装电脑:

2000元电脑配置单:

得到session

Session是一个内置对象可以直接使用

向session添加属性

Session.setAttribute(String name,Object o);

从session中得到某属性

Session.getAttribute(String name);

从session中删除某个属性

Session.removeAttribute(String name);

设置session的默认时间 session.setMaxInactiveInterval(30);//里面的单位是秒

使用session

1,.保存用户登陆信息

2.保存购物车

解决登陆的用户名是中文

1. 重新转码 u=new String(u.getBytes(“iso-8859-1”),”gb2312”);

2. 过滤器

3. 通过配置server.xml文件(不稳定)

从servlet更改编码方式

Response.setCharacterEncoding(“gb2312”);

这样从servlet传到jsp的值就能显示汉字了。

一个是否真的删除功能,二次检验功能

写在javascript里面

Return window.confirm(“你真的要删除吗”);

如果在表单 text 的属性中加 readonly 则里面的内容不能更改

给自己写的函数写注释,写到函数上面

/**

*@author 作者

*@param name:用户名

*@param pswd:密码

*@ return boolean(返回值):如果true说明。。,如果false。。。

*/

向jsp中引入jsp页面

<jsp:include flush=”true” page=”yinru.jsp”></jsp:include>

在jsp中引用css

<link rel=”stylesheet” type=”test/css” href=”css/my.css”>

默认打开一个新页面 可以给按钮设的监听事件

万高石材:/index.php 组装电脑:

2000元电脑配置单:

Window.open(“index.jsp”);

在原来的页面打开一个新页面

Window.open(“index.jsp”,”_self”);


第二篇:jsp基础学习资料


jsp基础学习资料

作者:佚名 阅读人次:19826 文章来源: 发布时间:2004-10-9 网友评论(8)

一、 JSP 技术概述

在 Sun 正式发布 JSP(JavaServer Pages) 之后,这种新的 Web 应用开发技术很快引起了人们的关注。 JSP 为创建高度动态的 Web 应用提供了一个独特的开发环境。按照 Sun 的说法, JSP 能够适应市场上包括 Apache WebServer 、 IIS4.0 在内的 85% 的服务器产品。即使您对 ASP “一往情深”,我们认为,关注 JSP 的发展仍旧很有必要。

㈠ JSP 与 ASP 的简单比较

JSP 与 Microsoft 的 ASP 技术非常相似。两者都提供在 HTML 代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。在 ASP 或 JSP 环境下, HTML 代码主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑。普通的 HTML 页面只依赖于 Web 服务器,而 ASP 和 JSP 页面需要附加的语言引擎分析和执行程序代码。程序代码的执行结果被重新嵌入到 HTML 代码中,然后一起发送给浏览器。 ASP 和 JSP 都是面向 Web 服务器的技术,客户端浏览器不需要任何附加的软件支持。

ASP 的编程语言是 VBScript 之类的脚本语言, JSP 使用的是 Java ,这是两者最明显的区别。此外, ASP 与 JSP 还有一个更为本质的区别:两种语言引擎用完全不同的方式处理页面中嵌入的程序代码。在 ASP 下, VBScript 代码被 ASP 引擎解释执行;在 JSP 下,代码被编译成 Servlet 并由 Java 虚拟机执行,这种编译操作仅在对 JSP 页面的第一次请求时发生。

㈡运行环境

Sun 公司的 JSP 主页在 /products/jsp/index.html ,从这里还可以下载 JSP 规范,这些规范定义了供应商在创建 JSP 引擎时所必须遵从的一些规则。

执行 JSP 代码需要在服务器上安装 JSP 引擎。此处我们使用的是 Sun 的 JavaServer Web Development Kit ( JSWDK )。为便于学习,这个软件包提供了大量可供修改的示例。安装 JSWDK 之后,只需执行 startserver 命令即可启动服务器。在默认配置下服务器在端口 8080 监听,使用 http://localhost:8080 即可打开缺省页面。

在运行 JSP 示例页面之前,请注意一下安装 JSWDK 的目录,特别是“ work ”子目录下的内容。执行示例页面时,可以在这里看到 JSP 页面如何被转换成 Java 源文件,然后又被编译成 class 文件(即 Servlet )。 JSWDK 软件包中的示例页面分为两类,它们或者是 JSP 文件,或者是包含一个表单的 HTML 文件,这些表单均由 JSP 代码处理。与 ASP 一样, JSP 中的 Java 代码均在服务器端执行。因此,在浏览器中使用“查看源文件”

菜单是无法看到 JSP 源代码的,只能看到结果 HTML 代码。所有示例的源代码均通过一个单独的“ examples ”页面提供。

㈢ JSP 页面示例

下面我们分析一个简单的 JSP 页面。您可以在 JSWDK 的 examples 目录下创建另外一个目录存放此文件,文件名字可以任意,但扩展名必须为 .jsp 。从下面的代码清单中可以看到, JSP 页面除了比普通 HTML 页面多一些 Java 代码外,两者具有基本相同的结构。 Java 代码是通过 < % 和 %> 符号加入到 HTML 代码中间的,它的主要功能是生成并显示一个从 0 到 9 的字符串。在这个字符串的前面和后面都是一些通过 HTML 代码输出的文本。

< HTML>

< HEAD>< TITLE>JSP 页面 < /TITLE>< /HEAD>

< BODY>

< %@ page language="java" %>

< %! String str="0"; %>

< % for (int i=1; i < 10; i++) {

str = str + i;

} %>

JSP 输出之前。

< P>

< %= str %>

< P>

JSP 输出之后。

< /BODY>

< /HTML>

这个 JSP 页面可以分成几个部分来分析。

首先是 JSP 指令。它描述的是页面的基本信息,如所使用的语言、是否维持会话状态、是否使用缓冲等。 JSP 指令由 < %@ 开始, %> 结束。在本例中,指令“ < %@ page language="java" %> ”只简单地定义了本例使用的是 Java 语言(当前,在 JSP 规范中 Java 是唯一被支持的语言)。

接下来的是 JSP 声明。 JSP 声明可以看成是定义类这一层次的变量和方法的地方。 JSP 声明由 < %! 开始, %> 结束。如本例中的“ < %! String str="0"; %> ”定义了一个字符串变量。在每一项声明的后面都必须有一个分号,就象在普通 Java 类中声明成员变量一样。

位于 < % 和 %> 之间的代码块是描述 JSP 页面处理逻辑的 Java 代码,如本例中的 for 循环所示。

最后,位于 < %= 和 %> 之间的代码称为 JSP 表达式,如本例中的“ < %= str %> ”所示。 JSP 表达式提供了一种将 JSP 生成的数值嵌入 HTML 页面的简单方法。

二、会话状态管理

作 者 : 仙人掌工作室

会话状态维持是 Web 应用开发者必须面对的问题。有多种方法可以用来解决这个问题,如使用 Cookies 、隐藏的表单输入域,或直接将状态信息附加到 URL 中。 Java Servlet 提供了一个在多个请求之间持续有效的会话对象,该对象允许用户存储和提取会话状态信息。 JSP 也同样支持 Servlet 中的这个概念。

在 Sun 的 JSP 指南 中可以看到许多有关隐含对象的说明(隐含的含义是,这些对象可以直接引用,不需要显式地声明,也不需要专门的代码创建其实例)。例如 request 对象,它是 HttpServletRequest 的一个子类。该对象包含了所有有关当前浏览器请求的信息,包括 Cookies , HTML 表单变量等等。 session 对象也是这样一个隐含对象。这个对象在第一个 JSP 页面被装载时自动创建,并被关联到 request 对象上。与 ASP 中的会话对象相似, JSP 中的 session 对象对于那些希望通过多个页面完成一个事务的应用是非常有用的。

为说明 session 对象的具体应用,接下来我们用三个页面模拟一个多页面的 Web 应用。第一个页面( q1.html )仅包含一个要求输入用户名字的 HTML 表单,代码如下:

< HTML>

< BODY>

< FORM METHOD=POST ACTION="q2.jsp">

请输入您的姓名:

< INPUT TYPE=TEXT NAME="thename">

< INPUT TYPE=SUBMIT VALUE="SUBMIT">

< /FORM>

< /BODY>

< /HTML>

第二个页面是一个 JSP 页面( q2.jsp ),它通过 request 对象提取 q1.html 表单中的 thename 值,将它存储为 name 变量,然后将这个 name 值保存到 session 对象中。 session 对象是一个名字 / 值对的集合,在这里,名字 / 值对中的名字为“ thename ”,值即为 name 变量的值。由于 session 对象在会话期间是一直有效的,因此这里保存的变量对后继的页面也有效。 q2.jsp 的另外一个任务是询问第二个问题。下面是它的代码:

< HTML>

< BODY>

< %@ page language="java" %>

< %! String name=""; %>

< %

name = request.getParameter("thename");

session.putValue("thename", name);

%>

您的姓名是: < %= name %>

< p>

< FORM METHOD=POST ACTION="q3.jsp">

您喜欢吃什么 ?

< INPUT TYPE=TEXT NAME="food">

< P>

< INPUT TYPE=SUBMIT VALUE="SUBMIT">

< /FORM>

< /BODY>

< /HTML>

第三个页面也是一个 JSP 页面( q3.jsp ),主要任务是显示问答结果。它从 session 对象提取 thename 的值并显示它,以此证明虽然该值在第一个页面输入,但通过 session 对象得以保留。 q3.jsp 的另外一个任务是提取在第二个页面中的用户输入并显示它:

< HTML>

< BODY>

< %@ page language="java" %>

< %! String food=""; %>

< %

food = request.getParameter("food");

String name = (String) session.getValue("thename");

%>

您的姓名是: < %= name %>

< P>

您喜欢吃: < %= food %>

< /BODY>

< /HTML>

三、引用 JavaBean 组件

作 者 : 仙人掌工作室 编译

JavaBean 是一种基于 Java 的软件组件。 JSP 对于在 Web 应用中集成 JavaBean 组件提供了完善的支持。这种支持不仅能缩短开发时间(可以直接利用经测试和可信任的已有组件,避免了重复开发),也为 JSP 应用带来了更多的可伸缩性。 JavaBean 组件可以用来执行复杂的计算任务,或负责与数据库的交互以及数据提取等。如果我们有三个 JavaBean ,它们分别具有显示新闻、股票价格、天气情况的功能,则创建包含所有这三种功能的 Web 页面只需要实例化这三个 Bean ,使用 HTML 表格将它们依次定位就可以了。

为说明在 JSP 环境下 JavaBean 的应用,我们创建了一个名为 TaxRate 的 Bean 。它有两个属性,即 Product (产品)和 Rate (税率)。两个 set 方法分别用来设置这两个属性,两个 get 方法则用于提取这两个属性。在实际应用中,这种 Bean 一般应当从数据库提取税率值,此处我们简化了这个过程,允许任意设定税率。下面是这个 Bean 的代码清单:

package tax;

public class TaxRate {

String Product;

double Rate;

public TaxRate() {

this.Product = "A001";

this.Rate = 5;

}

public void setProduct (String ProductName) {

this.Product = ProductName;

}

public String getProduct() {

return (this.Product);

}

public void setRate (double rateValue) {

this.Rate = rateValue;

}

public double getRate () {

return (this.Rate);

}

}

在 JSP 页面中应用上述 Bean 要用到 < jsp:useBean> 标记。依赖于具体使用的 JSP 引擎的不同,在何处配置以及如何配置 Bean 的方法也可能略有不同。本文将这个 Bean 的 .class 文件放在 c:\jswdk-1.0\examples\WEB-INF\jsp\beans\tax 目录下,这里的 tax 是一个专门存放该 Bean 的目录。下面是一个应用上述 Bean 的示例页面:

< HTML>

< BODY>

< %@ page language="java" %>

< jsp:useBean id="taxbean" scope="application" class="tax.TaxRate" />

< % taxbean.setProduct("A002");

taxbean.setRate(17);

%>

使用方法 1 : < p>

产品 : < %= taxbean.getProduct() %> < br>

税率 : < %= taxbean.getRate() %>

< p>

< % taxbean.setProduct("A003");

taxbean.setRate(3);

%>

< b> 使用方法 2 : < /b> < p>

产品 : < jsp:getProperty name="taxbean" property="Product" />

< br>

税率 : < jsp:getProperty name="taxbean" property="Rate" />

< /BODY>

< /HTML>

在 < jsp:useBean> 标记内定义了几个属性,其中 id 是整个 JSP 页面内该 Bean 的标识, scope 属性定义了该 Bean 的生存时间, class 属性说明了该 Bean 的类文件(从包名开始)。

这个 JSP 页面不仅使用了 Bean 的 set 和 get 方法设置和提取属性值,还用到了提取 Bean 属性值的第二种方法,即使用 < jsp:getProperty> 标记。 < jsp:getProperty> 中的 name 属性即为 < jsp:useBean> 中定义的 Bean 的 id ,它的 property 属性指定的是目标属性的名字。

事实证明, Java Servlet 是一种开发 Web 应用的理想构架。 JSP 以 Servlet 技术为基础,又在许多方面作了改进。 JSP 页面看起来象普通 HTML 页面,但它允许嵌入执行代码,在这一点上,它和 ASP 技术非常相似。利用跨平台运行的 JavaBean 组件, JSP 为分离处理逻辑与显示样式提供了卓越的解决方案。 JSP 必将成为 ASP 技术的有力竞争者。 JSP学习心得

作者:徐春金 阅读人次:15294 文章来源:计算机世界网 发布时间:2004-10-9 网友评论

(4)条

下面是本人在学习JSP时的一些心得,特此奉献出来以供大家分享。

一、JSP工作原理

在一个JSP文件第一次被请求时,JSP引擎把该JSP文件转换成为一个servlet。而这个引擎本身也是一个servlet,在JSWDK或WEBLOGIC中,它就是JspServlet。 JSP引擎先把该JSP文件转换成一个Java源文件,在转换时如果发现jsp文件有任何语法错误,转换过程将中断,并向服务端和客户端输出出错信息;如果转换成功, JSP引擎用javac把该Java源文件编译成相应的class文件。然后创建一个该SERVLET的实例,该SERVLET的jspInit

()方法被执行,jspInit()方法在servlet的生命周期中只被执行一次。然后jspService()方法被调用来处理客户端的请求。对每一个请求,JSP引擎创建一个新的线程来处理该请求。如果有多个客户端同时请求该JSP文件,则JSP引擎会创建多个线程。每个客户端请求对应一个线程。以多线程方式执行可大大降低对系统的资源需求,提高系统的并发量及响应时间.但应该注意多线程的编程限制,由于该servlet始终驻于内存,所以响应是非常快的。 如果.jsp文件被修改了,服务器将根据设置决定是否对该文件重新编译,如果需要重新编译,则将编译结果取代内存中的servlet,并继续上述处理过程。 虽然JSP效率很高,但在第一次调用时由于需要转换和编译而有一些轻微的延迟。 此外,如果在任何时候如果由于系统资源不足的原因,JSP引擎将以某种不确定的方式将servlet从内存中移去。当这种情况发生时jspDestroy()方法首先被调用, 然后servlet实例便被标记加入“垃圾收集”处理。 jspInit()及jspDestory()格式如下:可在jspInit()中进行一些初始化工作,如建立与数据库的连接,或建立网络连接,从配置文件中取一些参数等,在jspDestory()中释放相应的资源。

二、服务端的输出缓冲区

缺省情况下:服务端要输出到客户端的内容,不直接写到客户端,而是先写到一个输出缓冲区中.只有在下面三中情况下,才会把该缓冲区的内容输出到客户端上:

1.该JSP网页已完成信息的输出

2.输出缓冲区已满

3.JSP中调用了out.flush()或response.flushbuffer()

输出缓冲区的大小可以用:或response.setBufferSize()设置,如下:

1、设置输出缓冲区的大小为1KB。或response.setBufferSize(1);

2、设置输出缓冲区的大小为0,即不缓冲。或response.setBufferSize(0);

用response.getBufferSize()或out.getBufferSize()可取的输出缓冲区的大小,单位为字节.

用response.isCommitted()可检查看服务端是否已将数据输出到客户端. 如果返回值是TRUE则已将数据输出到客户端,是FALSE则还没有。

三、服务端输出重定向

有以下3种方法可以做到输出重定向:

(1) RESPONSE.SETREDERECT("URL")

该方法通过修改HTTP协议的HEADER部分,对浏览器下达重定向指令的,使浏览器显示重定向网页的内容.

response.sendRedirect("http://localhost:7001/index.html");

(2)下面的方法也能改变HTTP HEADER属性,它的原理和(1)是一样的.

(3)采用

该方法是利用服务器端先将数据输出到缓冲区的机制,在把缓冲区的内容发送到客户端之前,原来的不发送,改为发送该页面的内容,如果在之前有很多输出,前面的输出已使缓冲区满,将自动输出到客户端,那么该语句将不起作用,这一点应该特别注意.

如下面的例子中(1)会输出index.html的内容,(2)不会输出index.html的内容,而是输出out.println("@@@@@@@@@@@@@@@@@");

中的内容,并且在服务端会抛出:java.lang.IllegalStateException: Response already committed 异常,但客户端没有任何错误输出。

(1)

<JSP:FORWARD&NBSP;PAGE=". index.html? />

说明:

1. 方法(1),(2)可以使用变量表示重定向的地址;方法(3)不能使用变量表示重定向的地址。

String add="./index.html";

<JSP:FORWARD&NBSP;PAGE=&NBSP;ADD&NBSP; />

无法重定向到index.html中去

String add=http://localhost:7001/index.html

response.sendRedirect(add);

可以重定向到http://localhost:7001/index.html中去。

2. 采用方法(1),(2)request中的变量(通过request.setAttribute()保存到request中的值)不能在新的页面中采用,采用方法(3)能.

综上,我们应该采用(1),(2)重定向比较好。

四、JSP中正确应用类

应该把类当成JAVA BEAN来用,不要在 中直接使用. 如下的代码(1)经过JSP引擎转化后会变为代码(2):

从中可看出如果把一个类在JSP当成JAVA BEAN 使用,JSP会根据它的作用范围把它保存到相应的内部对象中.

如作用范围为request,则把它保存到request对象中.并且只在第一次调用(对象的值为null)它时进行实例化.

而如果在中直接创建该类的一个对象,则每次调用JSP时,都要重新创建该对象,会影响性能.

代码(1)

<JSP:USEBEAN&NBSP;ID="TEST"&NBSP;SCOPE="REQUEST"&NBSP;CLASS="DEMO.COM.TESTDEMO">

代码(2)

demo.com.testdemo test = (demo.com.testdemo)request.getAttribute("test");

if (test == null)

{

try

{

test = (demo.com.testdemo) java.beans.Beans.instantiate(getClass().getClassLoader(),"demo.com.testdemo");

}

catch (Exception _beanException)

{

throw new weblogic.utils.NestedRuntimeException("cannot instantiate 'demo.com.testdemo'",_beanException);

}

request.setAttribute("test", test);

out.print("\r\n");

}

out.print("\r\n\r\n\r\n");

test.print("this is use java bean");

testdemo td= new testdemo();

td.print("this is use new");

五、JSP的调试

JSP的调试比较麻烦,特别是当bean是在一个session中存在时,更加困难。得从好几个页面开始往里面走才行。通常是用out.println()或System.out.print()来打一大堆的信息来查问题。如果是用jbuilder做开发,它能直接调试JSP.不过更重要的是知道错误产生的原因及解决方法。下面对一些JSP编程常见错误进行分析。

(1).java.lang.NullPointerException异常

一般是对一个为NULL值的变量进行操作引起的.如下面的操作就会抛出java.lang.NullPointerException

String a = null;

a.substring(0,1);

为避免这种异常,最好在对变量操作之前检查看它是否为NULL值.如:

(2).JSP是用JAVA写的,所以它是大小写敏感的,用过其他编程语言的人最容易犯这个错误。另外在浏览器的地址栏中输入的访问JSP的地址也

是区分大小写的.如http://localhost:7001/demo/t.jsp与http://localhost:7001/Demo/t.jsp是不一样的.

(3).在jsp中判断字符串要使用compareTo方法,不要用==,因为在java中String变量不是一个简单的变量而是一个类实例,不同的方法会得到 不同的结果,如下所示:

1.

String str1="ABCD";

String str2="ABCD"; (或 String str2="AB"+"CD"; )

if (str1==str2)

out.print("yes");

else

out.print("no");

结果是"yes"。

2.

String str1,str2,str3;

str1="ABCD";

str2="AB";

str3=str2+"CD";

if (str1==str3)

out.print("yes");

else

out.print("no");

结果是"no"。

3.

String str1=new String("ABCD");

String str2=new String("ABCD");

if (str1==str2)

out.print("yes");

else

out.print("no");

结果是"no"。

4.

String str1=new String("ABCD");

String str2=new String("ABCD");

if (str1.compareTo(str2)==0)

out.print("yes");

else

out.print("no");

结果是"yes"。

(4)防止JSP或SERVLET中的输出被浏览器保存在缓冲区中:

浏览器在默认情况下会把浏览过的网页保存在缓冲区中,在调试时,一般不希望这样.把下面的脚本加入程序中,就可

防止JSP或SERVLET中的输出被浏览器保存在缓冲区中

在IE中也可通过设置实现:把/工具/INTERNET选项/常规/设置/的检察所存页面的较新版本,设为每次访问该页时都检查.

六、COOKIE

HTTP COOKIE实质是服务端与在客户端之间传送的普通HTTP头,可保存也可不保存在客户的硬盘上.如果保存,每一个文件大小不超过4K的文本文件.多个COOKIE可保存到同一个文件中. 如果从编程角度来看,在JSP中COOKIE就是JAVA提供的一个类.常用的方法如下所表示,因为客户端可能不接受COOKIE,所以建议不用它,改用SESSION等其他方式。 public class cookie

{

public String getDomain() //返回该COOKIE的有效域

public int getMaxAge() //返回该COOKIE的有效期,单位为秒

public String getName() //返回该COOKIE的名称

public String getPath() //返回该COOKIE的有效路径

public boolean getSecure() //返回该COOKIE的安全设置

public String getValue() //返回该COOKIE的值

public void setDomain(java.lang.String pattern) //设置该COOKIE的有效域

public void setMaxAge(int expiry) //设置该COOKIE的有效期,单位为秒

public void setPath(java.lang.String uri) //设置该COOKIE的有效路径

public void setSecure(boolean flag) //设置该COOKIE的安全设置

public void setValue(java.lang.String newValue) //设置该COOKIE的值

}

一个COOKIE包含以下五部分:

1. NAME/VALUE对,设置该COOKIE的名字及它保存的值

2. COOKIE通常和服务器相关,如果将域设为JAVA.SUN.COM,那么该COOKIE就和这个域相关,只对该网址起作用,当浏览该网址时,浏览器将把该 COOKIE的内容发送给服务端,COOKIE是作为HTTP HEADER的一部分被发送的,如果没有设置域,那么COOKIE就只和创建该COOKIE的服务器相关.

3. 路径用于指定服务器上可以使用该COOKIE的文件所在的路径,它只对该网址下的该路径下的应用起作用."/"表示服务器上所有目录都可以使 用该COOKIE.

4. COOKIE都有一个有效期,有效期默认值为-1,这表示没有保存该COOKIE,当该浏览器退出时,该COOKIE立即失效.

5. 安全选项true/false,如果设置为true,那么在服务端与在客户端之间传送该COOKIE的内容时,采用HTTPS协议.

如何检查一个客户端是否支持COOKIE的方法:

用下面的方法写一个COOKIE到客户端,并确认成功

try

{

Cookie c = new Cookie("mycookie","COOKIE TEST");

response.addCookie(c);

}

catch(Exception e)

{

System.out.println(e);

}

然后在一个新的JSP文件中:用下面的方法取客户端的COOKIE到cookies中,

如果cookies.length ==0,说明该客户端的浏览器不支持COOKIE

try

{

Cookie[] cookies = request.getCookies();

if(cookies.length ==0)

{

System.out.println("not support cookie");

}

}

catch(Exception e)

{

System.out.println(e);

}

八、JSP和SERVLET的区别

SUN首先发展出SERVLET,其功能比较强劲,体系设计也很先进,只是,它输出HTML语句还是采用了老的CGI方式,是一句一句输出,所以,编写和修改HTML非常不方便。 后来SUN推出了类似于ASP的JSP,把JAVA代码嵌套到HTML语句中,这样,就大大简化和方便了网页的设计和修改。ASP,PHP,JSP都是嵌套型的SCRIPT语言。 一个分布式系统应分为三层:表示层,业务逻辑层,数据存取层,在J2EE体系结构中,SERVLET用来写业务逻辑层是很强大的,但是对于写表示层就很不方便。JSP则主要是为了方便写表示层而设计的。ENTITY BEAN实现数据存取层,SESSION BEAN实现业务逻辑层。如果是简单的应用系统,可采用JSP+BEANS的结构进行设计,JSP中应该仅仅存放与表示层有关的东西,也就是说,只放输出HTML网页的部份。而所有的数据计算,数据分析,数据库联结处理,统统是属于业务逻辑层,应该放在JAVA BEANS中。通过JSP调用JAVA BEANS,实现两层的整合。 实际上,微软的DNA技术,简单说,就是ASP+COM/DCOM技术。与JSP+BEANS完全类似,所有的表示层由ASP完成,所有的业务逻辑由COM/DCOM完成。 为什么要采用这些组件技术呢?因为单纯的ASP/JSP语言是非常低效率执行的,如果出现大量用户点击,纯SCRIPT语言很快就到达了他的功能上限,而组件技术就能大幅度提高功能上限,加快执行速度。另外一方面,纯SCRIPT语言将表示层和业务逻辑层混在一起,造成修改不方便,并且代码不能重复利用,采用组件技术就只改组件就可以了。 对于复杂的应用,应该采用ENTITY BEAN实现数据存取层,SESSION BEAN实现业务逻辑层,用JSP来调用SESSION BEAN,由SESSION BEAN调用ENTITY BEAN。即采用JSP+EJB来构建一个复杂的分布式系统。它比JSP+BEAN具有更高的吞吐量,可靠性,安全性。综上所述,对简单应用,可采用JSP+BAEN,对复杂的应用系统,应采用JSP+EJB,SERVLET变的无足轻重。用JSP完全可替代它。

更多相关推荐:
Jsp基础知识总结

Jsp我们学完也有好长一段时间间了过程中总结的一点点基础知识拿来与初学者分享直到最后做我们一个小小的项目宠物医院也是用我们最简单的工具Jcreater40来做的呵到了Ecliplse下才发现开发速度如此之快不过...

jsp知识点总结

JSP期末复习总结作者张焕HTML基础知识HTML常用标签和元素ltmetahttpequivquotcontenttypequotcontenttexthtmlcharsetgb2312gtcharsetgb...

Jsp基础知识

Jsp基础知识txt如果有来生要做一棵树站成永恒没有悲伤的姿势一半在土里安详一半在风里飞扬一半洒落阴凉一半沐浴阳光非常沉默非常骄傲从不依靠从不寻找1Jsp基础知识总结Jsp我们学完也有好长一段时间间了过程中总结...

jsp基础知识(jsp)

5请讲一讲析构函数和虚函数的用法和作用析构函数是用来释放所定义的对象中使用的指针默认的析构函数不用显示调用自建的析构函数要在程序末尾调用虚函数可以让成员函数操作一般化用基类的指针指向不同的派生类的对象时基类指针...

JAVA基础知识总结

object类下的方法getClasshashCodeequalstoStringclonewaitnotifynotifyAllfinalizaJSP内置对象request表示HttpServletReque...

Java web开发中的jsp知识总结

Javaweb开发中的jsp知识总结1.jsp简介:jsp是一种基于文本的程序,其特点是HTML代码与Java程序共存,执行时jsp会被tomcat自动翻译,这个过程对开发者是透明的,不需要关注的,编译后的js…

jsp&servlet知识点总结

Servletservelt基于网络的什么是Servelt运行在web服务器或应用服务器上的java程序他是一个中间层负责连接来自web浏览器或其他HTTP客户程序的请求和HTTP服务器上的数据库或应用程序为什...

Java基础知识总结

第1章Java语言概述与面向对象思想111Java语言的发展1111Java语言的产生1112Java语言的发展112Java语言的特点213面向对象与面向过程的差异3131面向过程思想回顾4132面向对象思想...

J2EE基础知识点归纳总结

JDBC1JDBC开发的基础装入jdbc驱动程序创建与数据库的连接创建语句对象StatementPreparedStatement利用语句对象执行sql语句得到结果处理结果jdbc应用结束2JDBC常用的接口使...

java基础知识总结

31EJB包括SessionBeanEntityBean说出他们的生命周期及如何管理事务的32应用服务器有那些33给我一个你最常见到的runtimeexception34接口是否可继承接口抽象类是否可实现imp...

Struts2基础知识总结

Day1一框架概述1三大框架是企业主流JavaEE开发的一套架构Struts2SpringHibernate2什么是框架为什么要学框架框架是实现部分功能的代码半成品使用框架简化企业级软件开发学习框架清楚的知道框...

VC++基础知识总结

基本类模板是一个类模板的集合其中每个类模板有两个参数字符类型charT参数决定处理的元素类型而特性参数对每个特定的元素类型提供一些额外的特征usingnamespacestd详解一ltiostreamgt和lt...

jsp基础知识总结(14篇)