import javax。servlet。http。HttpServlet;
import javax。servlet。http。HttpServletRequest;
import javax。servlet。http。HttpServletResponse;
public class TestServlet extends HttpServlet {
private String username;
public void doGet(HttpServletRequest request;
HttpServletResponse response)
throws ServletException; IOException {
this。username = request。getParameter(〃username〃);
try {
Thread。sleep(10000);
} catch (InterruptedException ex) {
}
response。getWriter()。write(this。username);
}
}
126 / 148
…………………………………………………………Page 127……………………………………………………………
doGet()方法中从 request 中获得username 参数,然后赋给 this。username,这
是一个类变量。然后暂停 10 秒,这 10 秒我们假设正在进行一些很费时间的计算,
这样我们就有十秒钟去点两个页面的提交按钮了。最后将 this。username 写入
response。
你也许在想:“这没有问题啊,第一个页面提交了数据,等待 10 秒返回,第二
个页面再提交数据,等待 10 秒返回,两者并不冲突啊。”可实际上在多线程模
型中不会有这种队列让请求一个一个执行,所有请求都是蜂拥而至。
在这个例子里,第一个请求过来将“叮咚”赋值给 this。username 后进行等待,
10 秒之内我们的第二个请求又调用了 doGet()方法,并把 this。username 修改为
“lingirl”,等到 10 秒后第一个请求结束等待后,获得的 this。username 已经
是“lingirl”了。
this。username 这种写法在 servlet 中是绝对禁用的,如果有什么信息需要保存,
可以考虑放到 session 或 ServletContext 中。
14。3。 在 jsp 中定义类变量
写在之间的代码,在转换成 servlet 之后都会 service()方法内运行,所以
我们不必担心出现上边 this。username 的问题。
但是我们可以用 (注意多出来的感叹号)定义类变量或类方法,把上一个
罪大恶极的 servlet 改造成 jsp 的话,就像这样。
注意
使用 14…03 下的例子可以测试 jsp 出错的效果,记得要在 10 秒之内点击两次。
127 / 148
…………………………………………………………Page 128……………………………………………………………
似乎是一个巨大的陷阱,如果我们使用它定义类变量就一定会出现多线程
错误。
不过凡事都有正反两面,当我们需要在 jsp 中定义一个通用方法时,就需要借助
的力量了,假设我们需要一个方法,根据用户的性别显示不同的html 内容,
如果 sex = 0 就输出红色的“男”,如果 sex = 1 就输出绿色的“女”。为实现
这个功能,我们可以定义一个 sexRenderer()方法。
14…04/index。jsp 页面显示效果如下:
index。jsp 中的代码分两部分。
第一部分定义 sexRenderer()方法和
第二部分循环显示保存了性别信息的数组,显示的时候将会调用 sexRenderer()
方法。
128 / 148
…………………………………………………………Page 129……………………………………………………………
好的,现在我们知道可以在中定义方法和变量了。但是同时也要了解的是
已经脱离了 service()方法,这就导致不能在它里边使用 request,
response 这些默认变量了,如果想要调用 request 只能写成 void
doSomething(HttpServletRequest request)的形式了,稍微注意一下即可。
14。4。 jsp 九大默认对象
分别是 request; response; out; pageContext; session; application; page;
config; exception。
让我们看看它们与 servlet 中变量的对应关系。
首先要明确的是,这九个变量都只在中有效,中是无法调用这九个对
象的。实际上最后会成为 service()方法中的代码,我们这里就看看如何在
service()方法中获得这些对象吧。
1。 request
public void service(ServletRequest req; ServletResponse res) {
HttpServletRequest request = (HttpServletRequest) req;
}
jsp 中的request 就是 service()中传入的req 参数,因为 service 中定
义的是 ServletRequest 类型,我们还需要转换成 HttpServletRequest
类型。
2。 response
public void service(ServletRequest req; ServletResponse res) {
HttpServletResponse response = (HttpServletResponse) res;
}
与上例相同,response 也是 service()中传入的res 参数。
3。 out
129 / 148
…………………………………………………………Page 130……………………………………………………………
Writer out = response。getWriter();
out 对应着从 response 中取出的writer 对象,负责向响应中输出数据。
不过 jsp 和 servlet 中的 out 还是有一点区别,虽然它们都实现了
java。io。Writer 接口,但 servlet 中实际类型是 java。io。PrintWriter,
而 jsp 中实际类型是 javax。servlet。jsp。JspWriter。
4。 pageContext
这是 jsp 独有的,servlet 里没有 page 的概念。
5。 session
HttpSession session = request。getSession();
直接从 request 中获得会话。
6。 application
ServletConext application =
getServletConfig()。getServletContext();
可以通过 servletConfig 获得 ServletContext,这是整个web 应用共享
的?
小说推荐
- php程序设计简明教程(DOC格式)
- -Page 1-PHP 程序设计简明教程PHP 讲义 第 1 页 共 90 页-Page 2-目录序 4第一章 PHP 简介 6
- 最新章:第31章
- asp基础实用教程(DOC格式)
- 目 录一、关于ASP二、ASP的新功能三、创建ASP页四、使用脚本语言五、使用变量和常量六、使用集合七、ASP内建对象八、向浏览器发送内容九、包含文件十、访问数据库十一、调试ASP脚本十二、维护ASP应用程序的安全一、关于ASP Active Server Pages(ASP)是服务器端脚本编写环境
- 最新章:第17章
- asp基础入门篇(DOC格式)
- ASP入门与实例-IIS的安装与配置1、运行环境与软件要求Windows 2000 以上(不包括Windows XP Home版)IIS 4.0 以上Microsoft Access 2000Dreamweaver MX2、IIS的安装与配置a.安装IIS若操作系统中还未安装IIS服务器,可打开"控
- 最新章:第23章
- C语言游戏编程从入门到精通(PDF格式)
- -Page 1-Page 2-Page 3-Page 4-Page 5-Page 6-Page 7-Page 8-Page 9-Page 10-Page 11-Page 12-Page 13-Page 14
- 最新章:第4章
- JMS简明教程(PDF格式)
- -Page 1-JMS1.1规范中文版卫建军2007‐11‐22-Page 2
- 最新章:第28章
- C语言实例教程(PDF格式)
- -Page 1-前 言Visual C+是开发运行于Windows 95和Windows NT环境下的Win32应用程序的可视化编程工具中最重要的成员之一,它为软件开发人员提供了完整的编辑、编译和调试工具和建立于Win32 API(ApplicationProgramming Interface)基
- 最新章:第143章
- Word2003使用技巧大全(DOC格式)
- Word使用技巧(二)表格使用大全更新时间:2009-11-16 19:32:15 本文共阅读了257次 作者:xushezheng 文章来源:电教组字体大小:大中小一、快速插入表格 拖动“插入表格”能插入的最大表格跟该图标位置、显示分辨率有关。如使用800×600分辨率时最大为18行×28列 二、
- 最新章:第1章
- Excel word ppt office使用技巧大全(DOC格式)
- -Page 1-Excel_word_ppt_使用技巧大全(完全版)Excelwordppt使用技巧大全(2011新版本)I-Page 2-Excel_word_ppt_使用技巧大全(完全版
- 最新章:第338章
- oracle从入门到精通(PDF格式)
- -Page 1-Oracle 从入门到精通-Page 2-资源来自网络,仅供学习 Oracle 从入门到精通一、SQL 8
- 最新章:第37章