编程年龄也有6年多了,都是再使用DELPHI和C++等,最近刚开始学习JAVA语言,对这个领域相对很陌生,基本上算是从0开始。
所谓万丈高楼平地起,什么事情都要一步一步来。
这两天接触并查阅了大量的关于JAVA的资料,发现说它是一个庞大的家族并不为过,相反自己倒有点看的头晕目眩的了,为了不迷失在这片茂密的JAVA森林里面,决定定下初步的学习方向,由于本人过去做的都是基于C/S结构的应用程序,所以现在本人将目标放在了B/S的目标上面。
提起JAVA首先几乎所有程序员都知道它的语言的开放性和在世界级的广泛应用(相形之下本人以前学习的DELPHI和C++都可怜的很),而且还有伴随着JAVA的J2EE/J2ME等等架构。
我学习的第一个疑问就是J2EE究竟是什么,它到底有什么用处?
翻阅了很多网络上的资料,但是发现各位发资料的大大们好像都是高手中的高手,将一个J2EE写的惊天动地的,看了半天也完全没看明白。最后只好清楚的认识到自己的水平实在太低了,遂打消掉一步登天的念头决定从最简单的开始做起。
分类:Java
struts在上传文件过程中如何自动建立文件夹(转)
转自:http://bbs.chinajavaworld.com/thread.jspa?messageID=724084&tstart=0
struts上传文件问题
发表于: 2006-5-23 下午9:27 回复
struts在上传文件过程中如何自动建立文件夹?并根据上传的文件名存入不同的文件夹中?如果能有具体的例子代码更好。请各位多多指教,十分感谢!
·Hibernate查询出错
chenyanji
发表: 268
点数: 80
来自: 北京
注册: 05-3-1
Re: struts上传文件问题
发表于: 2006-5-26 下午11:53 原帖: springlet 回复
还是应该用FILE处理吧
POPO帐号:yanji94521 QQ:309157714 MSN:yanji94521@hotmail.com 欢迎加入IT交流QQ群:5468368
·不需要编写actionForm、action来完成struts架构。
gzxthebest
发表: 9
点数: 100
注册: 05-9-23
Re: struts上传文件问题
发表于: 2006-5-29 上午1:16 原帖: springlet 回复
自动创建文件夹?还真没实现过,关注中
·关于jsp页面执行问题
test_1982
发表: 116
点数: 100
注册: 05-7-26
Re: struts上传文件问题
发表于: 2006-5-29 下午1:30 原帖: springlet 回复
可以通过file对象创建文件夹的。
1: 如果不存在{
File file = new File("d:/testD");
file.mkdir();
}
这样就创建了一个文件夹。后面的你应该知道如何递归的创建文件夹了吧。
Knowing how to make the one of the most abilities counts for much more
·大家好 关于3gp文件的转换
Forward on committed response错误
原来用struts1.1使用如下注释掉的代码一切正常,
|
换为struts1.2.9后就出现:Forward on committed response错误(Tomcat5.0控制台debug);在网站上运行resin2.1.12在页面上报错:
500 Servlet Exception
java.lang.IllegalStateException: forward() not allowed after buffer has
committed.
at com.caucho.server.http.QRequestDispatcher.forward(QRequestDispatcher.java:131)
at com.caucho.server.http.QRequestDispatcher.forward(QRequestDispatcher.java:103)
at com.caucho.server.http.QRequestDispatcher.forward(QRequestDispatcher.java:80)
at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:165)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:103)
at com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:96)
at com.learndiary.website.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:102)
at com.caucho.server.http.FilterChainFilter.doFilter(FilterChainFilter.java:88)
at com.caucho.server.http.Invocation.service(Invocation.java:315)
at com.caucho.server.http.RunnerRequest.handleRequest(RunnerRequest.java:346)
at com.caucho.server.http.RunnerRequest.handleConnection(RunnerRequest.java:274)
at com.caucho.server.TcpConnection.run(TcpConnection.java:139)
at java.lang.Thread.run(Thread.java:595)
--------------------------------------------------------------------------------
Resin 2.1.12 (built Tue Dec 9 14:58:25 PST 2003)
经过查资料,发现是PrintWriter已经返回用户数据后,就不能再forward到其它页面了。也就是这个错误:
|
所以就不在Action中写提示信息了,而把其移动jsp页面,如下:
|
同时,我发现如果在Action中用的是request.setAttribute("isMessage", "true");
则在页面中可以 <c:if test="${requestScope['isMessage'] == true }">
注意,上面的“true”是没有加引号的,可能这就是c:if的boolean类型吧,我也没有去查资料;
但是,如果为:request.setAttribute("isMessage", "otherString");
则必须这样: <c:if test="${requestScope['isMessage'] == \"otherString\"); }">
就是要加双引号,而且要进行转意。
resin3.0.18有关jsessionid的问题
虚拟空间最近升级为resin3.0.18,本站出现只要在url中出现了jsessionid的情况均不能访问,初步估计是虚拟空间的设置可能屏蔽了这种url的访问。
但是,我们使用了struts的标签库,我目前发现无法避免不在url中出现jsessionid(在一次的连续访问中,这种带jsessionid的url出现一次后面的访问就不出现了)。
查了一下,resin中有关session的设置有下面这么一项可能有用,但是,目前网站移回原来的resin2,到时,空间不提供resin2的时候可以一试。
来自http://www.caucho.com/resin-3.0/config/webapp.xtp
By default, both enable-cookies and enable-url-rewriting are true. To force url rewriting, you would create a configuration like:
<web-app id='/'>
<session-config
enable-cookies='false'
enable-url-rewriting='true'/>
</web-app>
这样,如果空间不能执行带jsessionid的url时,我可以试着把enable-cookies='true',而把enable-url-rewriting='false',这样url中就不会出现jsessionid了,程序通过用户的cookie来保持session。只不过要求用户必须开启cookie了。
另外,有关resin服务器的设置中关于session的部分:http://www.caucho.com/resin-3.0/config/resin.xtp
|
jsp页面引用Action中的变量
<c:if test="${param.typeID == 2 && requestScope['parentArtVisibility']==0}">只能引用request作用域的变量parentArtVisibility
<c:if test="${param.typeID == 2 && parentArtVisibility==0}">可以引用任何作用域的变量parentArtVisibility
html:radio 标记中怎么样指定一个初始值(默认值)?
<tr>
<td width="100%" align="center">
<input type="radio" name="visibility" value="0" checked="checked">公开目标
<input type="radio" name="visibility" value="1">私人目标</td>
<!--
<html:radio property="visibility" value="0"/>公开目标
<html:radio property="visibility" value="1"/>私人目标</td>
-->
</tr>
如上,怎么样在struts中的html:radio 标签中达到html 中<input type="radio" name=... checked="checked"...的效果?
一个可扩展的高速UBB标签转换引擎(转帖)
一个可扩展的高速UBB标签转换引擎
编辑:rocks 审核:rocks 文章来源:本站原创
关键词:ubb 发表日期:2006-03-23 15:15:26 浏览次数:266次
本文版权归原作者,中国JAVA手机网收录本文的目的是让更多人阅读到此文章。转载请注明出处为中国JAVA手机网<www.cnjm.net>
[本文章最后由 rocks 在2006-03-23 15:21:43编辑过]
来自:http://www.cnjm.net/tech/article1263.html
下载源代码
现在UBB标签技术已经广泛的应用于网站开发中,比起直接使用Html标签,UBB标签更安全,也更容易学习。
目前各种服务器端技术,无论是CGI(perl), ASP, PHP还是JSP,在网上都能找到大量的UBB转换代码,但经过笔者的考察,大部分都是采用正则表达式匹配替换的方式实现的,用这种方式比较简单易行,但是有一些明显的缺点:
1. 性能较差,因为这种转换方法对每一种UBB标签都要做一次全文的匹配替换,所以UBB标签种类越多,速度越慢
2. 对错误的嵌套方式会做出错误的转换处理,比如"你[i]好啊[/i]",会被转换为"<b>你<i>好</b>啊</i>",这显然是错误的HTML语法,因为HTML的标签只能互相嵌套,而是不允许互相跨越的
3. 不支持同类标签的嵌套使用,比如"你好啊",会被转换为"<font color=red>你好</font>啊"
4. 扩展起来较为困难,因为需要扩展者也要有正则表达式的知识才能正确的添加新的UBB标签,而相对来说,正则表达式的理解和学习还是有一定难度的
针对这种现状,笔者在开发本站的UBB标签转换系统时使用了全新的思路和算法,即把整个文章转换成一棵由UBB标签和正文组成的树,针对每个UBB标签的树节点进行转换处理,采用这种全新算法的UBB标签转换器有以下的特点:
JAVA手机网[www.cnjm.net]1. 性能极高,对全文只扫描一遍,且和UBB标签的种类数量无关,因此可以任意添加新的UBB标签而不必担心性能会下降
2. 容错性非常好,对于上面的错误UBB语法"你[i]好啊[/i]",可以选择两种容错模式“忽略(IGNORE)”和“关闭(CLOSE)”,如果采用忽略模式,那么错误的标签会被忽略掉,也就是转换为"<b>你好</b>啊";而如果采用关闭模式,则内层的未关闭UBB标签会被自动关闭,即转换成为"<b>你<i>好</i></b>啊[/i]"。无论哪种模式,产生的HTML代码都是正确的
3. 支持同类标签的多次嵌套
4. 支持“空”标签,也就是形如[img=myimg.gif/]这样用"/]"结尾,且没有对应结束标签的UBB代码
5. 容易扩展,用户只要自定义一个UBB标签处理器,负责可能的UBB标签的鉴别工作,和最后如何对标签的属性和内嵌文本进行处理就可以了。
所谓“可能的UBB标签”,就是任何一对"["和"]"中间的内容,自定义标签处理器要负责判断这段内容是否是合法的UBB标签,并把标签分成UBB标记和标记的属性两部分,比如,引擎调用处理器的方法handler.parseTag("color=red", false),处理器应把参数分成UBB标记"color"和属性"red"两部分并作为字符串数组返回,而对于非UBB标签,比如"[转贴文章]",处理器只要简单的返回null,转换引擎就会把它作为普通文本处理。
而最后的处理工作也很简单,转换引擎会调用处理器的compose方法,把UBB标记,标记的属性和内嵌的文本传给该方法,比如handler.compose("color", "red", "你好啊", false),处理器只要简单的把它们组合成"<font color=red>你好啊</font>"并返回这个字符串就可以了。
本站的文章系统与文章评论就是使用了这套UBB处理引擎,你可以在发表评论的时候测试一下本站的UBB代码支持。
作为一个例子,下面就是一个简单的UBB标签处理器,是本站使用的UBB标签处理器的一个简化版本:
这个简单的例子支持的标签种类不多,你可以继续扩展,另外用一大堆equals挨个进行比较效率比较低,你可以用一个HashMap或Hashtable来进行快速的定位和查找。
=============================== SimpleTagHandler.java源代码 ===============================
package util;
public class SimpleTagHandler implements UBBTagHandler {
// 文字加粗体效果
// 文字加倾斜效果
// 文字加下划线效果
JAVA手机网[www.cnjm.net]// 改变文字大小
// 改变文字颜色
//
|
// http://www.cnjm.net
// JAVA手机网
JAVA手机网[www.cnjm.net]// 写信给我
// webmaster@cnjm.net
//
public SimpleTagHandler() { }
public String[] parseTag(String s, boolean isEmpty) {
if (isEmpty) { // 本处理器不支持空标签
return null;
JAVA手机网[www.cnjm.net] }
// 如果标签中有'='号就把标签分为UBB标记和属性两部分,否则属性为null
String tag = s, attr = null;
int idx = s.indexOf('=');
if (idx >= 0) {
tag = s.substring(0, idx);
attr = s.substring(idx + 1);
}
String tmp = tag.toLowerCase(); // 大小写不敏感
// 只有下面的标记是本处理器支持的
if ("b".equals(tmp) ||
"i".equals(tmp) ||
"u".equals(tmp) ||
"size".equals(tmp) ||
"color".equals(tmp) ||
"quote".equals(tmp) ||
"url".equals(tmp) ||
"email".equals(tmp) ||
"img".equals(tmp)) {
return new String[] { tag, attr };
}
// 不是一个合法的UBB标签,作为普通文本处理
return null;
}
public String compose(String tag, String attr, String data, boolean isEmpty) {
// 针对不同标记进行组合工作
String tmp = tag;
if ("b".equals(tmp) ||
"i".equals(tmp) ||
"u".equals(tmp)) {
return "<" + tag + ">" + data + "</" + tag + ">";
} else if ("size".equals(tmp) ||
"color".equals(tmp)) {
return "<font " + tag + "='" + attr + "'>" + data + "</font>";
JAVA手机网[www.cnjm.net] } else if ("quote".equals(tmp)) {
return "<table cellpadding=0 cellspacing=0 width=94% bgcolor=#000000 align=center style='table-layout:fixed'><tr><td><table width=100% cellpadding=5 cellspacing=1 style='table-layout:fixed'><tr><td bgcolor=#FFFFFF style='left: 0px; width: 100%; word-wrap: break-word'>"
JAVA手机网[www.cnjm.net] + data + "</td></tr></table></td></tr></table>";
} else if ("url".equals(tmp)) {
String url = attr != null ? attr : data;
return "<a href='" + url + "' target=_blank>" + data + "</a>";
} else if ("email".equals(tmp)) {
String email = attr != null ? attr : data;
return "<a href='mailto:" + email + "'>" + data + "</a>";
JAVA手机网[www.cnjm.net] } else if ("img".equals(tmp)) {
return "<img src='" + data + "' border=0>";
}
return data;
}
// 测试代码,可以运行这个类,并把包含UBB标签的文本作为参数传入来测试
// 比如java util.SimpleTagHandler "你好啊"
public static void main(String[] args) throws Exception {
System.out.println(">>>>" + args[0]);
JAVA手机网[www.cnjm.net] // 下面采用了忽略模式来容错,你也可以用MODE_CLOSE试验一下关闭模式的容错效果
System.out.println("=========================\n"
+ UBBDecoder.decode(args[0], new SimpleTagHandler(), UBBDecoder.MODE_IGNORE));
}
JAVA手机网[www.cnjm.net]}
JAVA手机网[www.cnjm.net]
下载源代码
来自:http://www.cnjm.net/tech/article1263.html
相关文章
使用Java实现UBBCode的转换 [2006-03-03]
提升JSP应用程序的7大绝招(转帖)
提升JSP应用程序的7大绝招(转自:http://www.weste.net/2005/1-10/15174728409.html)
作者:陶国强 罗小虎 发布时间:2005-1-10 15:17:47 | 【字体:大 中 小】
枪战系列
你时常被客户抱怨JSP页面响应速度很慢吗?你想过当客户访问次数剧增时,你的WEB应用能承受日益增加的访问量吗?本文讲述了调整JSP和servlet的一些非常实用的方法,它可使你的servlet和JSP页面响应更快,扩展性更强。而且在用户数增加的情况下,系统负载会呈现出平滑上长的趋势。在本文中,我将通过一些实际例子和配置方法使得你的应用程序的性能有出人意料的提升。其中,某些调优技术是在你的编程工作中实现的。而另一些技术是与应用服务器的配置相关的。在本文中,我们将详细地描述怎样通过调整servlet和JSP页面,来提高你的应用程序的总体性能。在阅读本文之前,假设你有基本的servlet和JSP的知识。
方法1:在servlet的init()方法中缓存数据
当应用服务器初始化servlet实例之后,为客户端请求提供服务之前,它会调用这个servlet的init()方法。在一个servlet的生命周期中,init()方法只会被调用一次。通过在init()方法中缓存一些静态的数据或完成一些只需要执行一次的、耗时的操作,就可大大地提高系统性能。
例如,通过在init()方法中建立一个JDBC连接池是一个最佳例子,假设我们是用jdbc2.0的DataSource接口来取得数据库连接,在通常的情况下,我们需要通过JNDI来取得具体的数据源。我们可以想象在一个具体的应用中,如果每次SQL请求都要执行一次JNDI查询的话,那系统性能将会急剧下降。解决方法是如下代码,它通过缓存DataSource,使得下一次SQL调用时仍然可以继续利用它:
public class ControllerServlet extends HttpServlet
{
private javax.sql.DataSource testDS = null;
public void init(ServletConfig config) throws ServletException
{
super.init(config);
Context ctx = null;
try
{
ctx = new InitialContext();
testDS = (javax.sql.DataSource)ctx.lookup("jdbc/testDS");
}
catch(NamingException ne)
{
ne.printStackTrace();
}
catch(Exception e)
{
e.printStackTrace();
}
}
public javax.sql.DataSource getTestDS()
{
return testDS;
}
...
...
}
方法 2:禁止servlet和JSP 自动重载(auto-reloading)
Servlet/JSP提供了一个实用的技术,即自动重载技术,它为开发人员提供了一个好的开发环境,当你改变servlet和JSP页面后而不必重启应用服务器。然而,这种技术在产品运行阶段对系统的资源是一个极大的损耗,因为它会给JSP引擎的类装载器(classloader)带来极大的负担。因此关闭自动重载功能对系统性能的提升是一个极大的帮助。
方法 3: 不要滥用HttpSession
在很多应用中,我们的程序需要保持客户端的状态,以便页面之间可以相互联系。但不幸的是由于HTTP具有天生无状态性,从而无法保存客户端的状态。因此一般的应用服务器都提供了session来保存客户的状态。在JSP应用服务器中,是通过HttpSession对像来实现session的功能的,但在方便的同时,它也给系统带来了不小的负担。因为每当你获得或更新session时,系统者要对它进行费时的序列化操作。你可以通过对HttpSession的以下几种处理方式来提升系统的性能:
如果没有必要,就应该关闭JSP页面中对HttpSession的缺省设置: 如果你没有明确指定的话,每个JSP页面都会缺省地创建一个HttpSession。如果你的JSP中不需要使用session的话,那可以通过如下的JSP页面指示符来禁止它:
<%@ page session="false"%>
不要在HttpSession中存放大的数据对像:如果你在HttpSession中存放大的数据对像的话,每当对它进行读写时,应用服务器都将对其进行序列化,从而增加了系统的额外负担。你在HttpSession中存放的数据对像越大,那系统的性能就下降得越快。
当你不需要HttpSession时,尽快地释放它:当你不再需要session时,你可以通过调用HttpSession.invalidate()方法来释放它。
尽量将session的超时时间设得短一点:在JSP应用服务器中,有一个缺省的session的超时时间。当客户在这个时间之后没有进行任何操作的话,系统会将相关的session自动从内存中释放。超时时间设得越大,系统的性能就会越低,因此最好的方法就是尽量使得它的值保持在一个较低的水平。
[resin]resin 配置与使用(转帖)
[resin]resin 配置与使用(转自:http://blogger.org.cn/blog/more.asp?name=mjm0928&id=13262)
心得体会
mjm0928 发表于 2006-4-7 12:56:07
1. <http host='localhost' port='80'/>
host参数指定的是服务器,port指定的是http端口,默认是localhost和8080。
2. <srun host='localhost' port='6802'/> 这个是jsp和java Servlet的引擎配置。
3. 使用Resin开发Java Web项目时,需要建立自己的WebApp。
4. Resin中的应用可以有2种方式发布:
一是在Resin的目录下发布;
二是打包成War发布。
5. 在resin.conf中查找<web-app>标签,该标签表示一个web应用
标签中,id属性表示该应用的Web路径。如<web-app id='/test'>,表示该应用在Web上访问的时候应该用http://hostname/test/来访问。app-dir属性表示该应用的实际路径。如<app-dir>d:\resin\doc\test</app-dir>表示该应用在d:\resin\doc\test目录下面。默认值为根下面的和id同名的目录。Resin可以配置3种error-page:404错误也就是文件找不到错误页;Exception违例页;不能连接java引擎页。他们分别可以这样子设置。
404文件找不到页
<web-app id='/app1'>
<error-page error-code='404' location='/file_not_found.jsp'/>
</web-app>
Exception 违例页
<web-app id='/foo'>
<error-page exception-type='java.lang.NullPointerException' location='/nullpointer.jsp'/>
</web-app>
不能连接到srun Servlet引擎错误页
该页设置和应用无关,属于服务器的设置。
<http-server>
<error-page exception-type='connection' location='/missing_file.html'/>
</http-server>
参见下面的语句:
<classpath id='WEB-INF/classes' source='WEB-INF/src' compile='true'/>
id参数的值表示classpath中编译后的class的存放路径;
source参数的值表示classpath中java源代码的存放路径;
compile中的值可能是true或者false,表示是否由Resin的srun自动编译java源代码。
Classpath的设置一般和javaBean或者Servlet的使用有关。id的值表示javaBean的编译好的包存放的根,source的值表示javaBean的java源代码存放的根。Servlet相同。
6. Servlet的设置
<servlet-mapping url-pattern='*.xtp' servlet-name='xtp'/>
<servlet-mapping url-pattern='*.jsp' servlet-name='jsp'/>
<servlet-mapping url-pattern='/servlet/*' servlet-name='invoker'/>
一般就是指定那些需要通过srun的解析。比如在这里,把*.jsp改成*.jss,其他不变,那么只要在访问时遇到*.jss的文件就和原来遇到*.jsp一样处理。通过这个可以指定解析的引擎,如以下的配置:
<servlet-mapping url-pattern='*.xtp' servlet-name='com.caucho.jsp.XtpServlet'/>
在Servlet中,也可以指定servlet。如
<servlet servlet-name='hello' servlet-class='test.HelloWorld'/>
<servlet-mapping url-pattern='/hello.html' servlet-name='hello'/>
在servlet-mapping中有个重要的参数case-sensitive 如果在windows上,最好配置成false,忽略大小写,从而和windows的约定一致。
7. Session的配置
<session-config>
<session-max>4096</session-max>
<session-timeout>30</session-timeout>
<enable-cookies>true</enable-cookies>
<enable-url-rewriting>true</enable-url-rewriting>
<file-store>WEB-INF/sessions</file-store>
</session-config>
session-max :最大 session数量
session-timeout :session过期时间,以分钟为单位。
是否允许cookie :指session是否采用cookies。如果采用cookies,浏览器必须支持session才能使用,发布时建议改成false。enable-url-rewriting和enable-cookies一般配合使用。如果enable-cookies是false,
enable-url-rewriting应该设成true比较合适。
file-store :该配置指示服务器是否把session作为文件存放在服务器上。如果把该项注释掉,则在你的web-app目录下的WEB-Inf/sessions目录不保存序列化后的session对象。Session还有jdbc-store配置,对应着把session通过jdbc永久保存在数据库中。其实也就是会话变量的序列化后的保存和重新载入的物理实现。
关于tomcat服务器优化,常遇到的一些简单问题的解决方法(
关于tomcat服务器优化,常遇到的一些简单问题的解决方法 (z)(转自:http://www.21tx.com/dev/2005/01/14/14647.html)
http://dev.21tx.com 2005年01月14日 Blog bon_jovi
每日文章精萃
.Net:解析Visual Basic.NET事件编程 Java:结合Direct Web Remoting使用AJAX
ASP:如何在 dataGrid 上的第一列加上 Che PHP:嵌入式Web视频点播系统实现方法
JSP:在Windows NT 4.0上安装Apache+Servl CGI:Perl程序设计中常用的函数之二
VB:在VB 中调用动态连接库 VC:目录文件查找包装类
配置tomcat的时候,我想禁掉目录列表的访问。结果通过google的搜索找到了一篇不错的文章。除了我想要的,还有一些其他有用的东西。
出处:你的博客网(yourblog.org)
做JSP时,关于tomcat服务器优化,常遇到的一些简单问题的解决方法:
1.如何禁止访问目录列表:
修改tomcat x.x/conf/Web.XML内的一个属性值,就是把true 改为 false
在web.xml里找到以下代码
<Servlet>
<servlet-name>default</servlet-name>
<servlet-class>
org.apache.catalina.servlets.DefaultServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
把其中的<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
改为 <init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
2.如果某文件资源没有找到,服务器要报404错误,
如果执行的某个JSP文件产生 NullPointException
会显示一些不想异常提示代码,
为了让用户看到更更友好的页面
可在自己的虚拟目录的WEB-INF/web.xml中作如下的设置
<error-page>
<error-code>404</error-code>
<location>/notFileFound.jsp</location>
</error-page>
<error-page>
<exception-type>Java.lang.NullPointerException</exception-type>
<location>/null.jsp</location>
</error-page>
同理,你也可以设置抛出其它异常时应该显示的页面!
另外在jsp页面最上方加上这样一句话,
<%@ page isErrorPage="true" errorPage="error.jsp"%>
也可以捕捉NullPointerException这种异常,此时转向error.jsp
3.设置session的超时时间 (单位:分钟)
<session-config>
<session-timeout>30</session-timeout>
</session-config>
4.设置默认欢迎页面(当不输入文件名,只输入目录时起作用)
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
</welcome-file-list>
------------------------
配置好的web.xml文件如下:
------------------------
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>Tomcat Examples</display-name>
<description>
Tomcat Example servlets and JSP pages.
</description>
<!--
会话超时的设置
设置session 的过期时间,单位是分钟;
-->
<session-config>
<session-timeout>10</session-timeout>
</session-config>
<!-- -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
</welcome-file-list>
<error-page>
<error-code>404</error-code>
<location>/notFileFound.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/common/500.jsp</location>
</error-page>
<!-- 可以对特定的Exception 捕获 -->
<error-page>
<exception-type>java.lang.NullPointerException</exception-type>
<location>/null.jsp</location> </error-page>
<!--
如果某文件资源没有找到,服务器要报404错误,按上述配置则会调用notFileFound.jsp。
如果执行的某个JSP文件产生NullPointException ,则会调用null.jsp
-->
<!--
下面的写法是错误的,少一个 /
<error-page>
<error-code>404</error-code>
<location>filenotfound.jsp</location>
</error-page>
-->
</web-app>