??xml version="1.0" encoding="utf-8" standalone="yes"?> 1.通过配置web.xml(tomcat\conf)Q实现在JSP打开EXCEL文g的功? 在WEB.xml(tomcat\conf)中加入如下代? <mime-mapping> <extension>xls</extension> <mime-type>application/msexcel</mime-type> </mime-mapping> 2.如果需要文件以EXCEL形式打开Q则在JSP文g头部增加如下配置 <%@ page contentType="application/vnd.ms-excel" %> Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1293331
<mime-type>: 除了该类型文件的可执行文?同WINDOW注册表中?
/HKEY_CLASSES_ROOT下该cL件的Content Type 的g?
如能在IE中自动打开DOCQXLSQPDF文g需在web.xml文g中增加如下配|?
<mime-mapping>
<extension>doc</extension>
<mime-type>application/msword</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xls</extension>
<mime-type>application/msexcel</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pdf</extension>
<mime-type>application/pdf</mime-type>
</mime-mapping>
在JSP打开EXCEL文g
]]>
]]>
log4jQ可以有如下的creamQ?
1. 动态的改变记录U别和策略,不需要重启Web应用Q如《Effective Enterprise Java》所说?
2. 把log文g定在 /WEB-INF/logs/ 而不需要写l对路径?
3. 可以把log4j.properties和其他properties一h?WEB-INF/ Q而不是Class-Path?
在web.xml d
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>WEB-INF/log4j.properties</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>60000</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
在上文的配置?
Log4jConfigListener会去WEB-INF/log4j.propeties d配置文g;
开一条watchdogU程?0U扫描一下配|文件的变化;
q把web目录的\径压入一个叫webapp.root的系l变量?
然后Q在log4j.properties 里就可以q样定义logfile位置
log4j.appender.logfile.File=${webapp.root}/WEB-INF/logs/myfuse.log
如果有多个web应用Q怕webapp.root变量重复Q可以在context-param里定义webAppRootKey?
在jboss中启动时出错Q?
2006-03-22 00:58:38,983 INFO [STDOUT] log4j:ERROR A "org.jboss.logging.util.OnlyOnceErrorHandler" object is not assignable to a "org.apache.log4j.spi.ErrorHandler" variable.
2006-03-22 00:58:38,983 INFO [STDOUT] log4j:ERROR The class "org.apache.log4j.spi.ErrorHandler" was loaded by
2006-03-22 00:58:38,983 INFO [STDOUT] log4j:ERROR [WebappClassLoader
delegate: false
repositories:
/WEB-INF/classes/
----------> Parent Classloader:
java.net.FactoryURLClassLoader@40f7a8
] whereas object of type
2006-03-22 00:58:38,983 INFO [STDOUT] log4j:ERROR "org.jboss.logging.util.OnlyOnceErrorHandler" was loaded by [org.jboss.system.server.NoAnnotationURLClassLoader@120a47e].
2006-03-22 00:58:39,133 INFO [STDOUT] log4j:ERROR Could not create an Appender. Reported error follows.
2006-03-22 00:58:39,133 INFO [STDOUT] java.lang.ClassCastException
我log4j.properties如下Q?
log4j.rootLogger=DEBUG,stdout,R
#log4j.rootLogger=DEBUG,R
#--------------------stdout--------------------------------
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %c - %m%n
#--------------------R--------------------------------
#log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
#this log file will be stored in web server's /bin directory,modify to your path which want to store.
log4j.appender.R.File=${webapp.root}/WEB-INF/logs/MeetPortal.log
#log4j.appender.R.datePattern='.'yyyy-MM-dd-HH-mm
log4j.appender.R.datePattern='.'yyyy-MM-dd
log4j.appender.R.append=true
## Keep one backup file
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %c - %m%n
#[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
按各位高手帮我看哈,谢谢?!!!!!!!!!!!!!!!!!!!!!!!111
===============================================
The error above is caused by jboss problem, see
http://jira.atlassian.com/browse/JRA-6823.
"
One way to solve the classloader issue is by reverting the JBoss configuration
to the old classloading model.
Edit the file
<jboss>/server/default/jbossweb-tomcat55.sar/META-INF/jboss-service.xml
Change the following lines:
<attribute name="Java2ClassLoadingCompliance">true</attribute>
<attribute name="UseJBossWebLoader">true</attribute>
(both are default set to false in jboss-4.0.2).
]]>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>EMAIL?lt;/title>
</head>
<body>
<SCRIPT LANGUAGE="JavaScript">
<!--
function check()
{
if(document.register.email.value.length!=0)
{
if (document.register.email.value.charAt(0)=="." ||
document.register.email.value.charAt(0)=="@"||
document.register.email.value.indexOf('@', 0) == -1 ||
document.register.email.value.indexOf('.', 0) == -1 ||
document.register.email.value.lastIndexOf("@")==document.register.email.value.length-1 ||
document.register.email.value.lastIndexOf(".")==document.register.email.value.length-1)
{
alert("Email的格式不正确Q?);
document.register.email.focus();
return false;
}
}
else
{
alert("Email的不能ؓI!");
document.register.email.focus();
return false;
}
return false;
}
//-->
</SCRIPT>
<form name="register" method="POST" action onSubmit="return check();">
<p align="center">
Email:<input type="text" name="email" size="20">
<input type="submit" value="提交" name="B1">
<input type="reset" value="重填" name="B2">
</p>
</form>
</body>
</html>
]]>
Ctrl+1 快速修?最l典的快捷键,׃用多说了)
Ctrl+D: 删除当前?
Ctrl+Alt+?复制当前行到下一?复制增加)
Ctrl+Alt+?复制当前行到上一?复制增加)
Alt+?当前行和下面一行交互位|?特别实用,可以省去先剪?再粘贴了)
Alt+?当前行和上面一行交互位|?同上)
Alt+?前一个编辑的面
Alt+?下一个编辑的面(当然是针对上面那条来说了)
Alt+Enter 昄当前选择资源(工程,or 文g or文g)的属?br />Shift+Enter 在当前行的下一行插入空?q时鼠标可以在当前行的Q一位置,不一定是最?
Shift+Ctrl+Enter 在当前行插入I(原理同上?
Ctrl+Q 定位到最后编辑的地方
Ctrl+L 定位在某?(对于E序过100的h有音?
Ctrl+M 最大化当前的Edit或View (再按则反?
Ctrl+/ 注释当前?再按则取消注?br />Ctrl+O 快速显C?OutLine
Ctrl+T 快速显C当前类的承结?br />Ctrl+W 关闭当前Editer
Ctrl+K 参照选中的Word快速定位到下一?br />Ctrl+E 快速显C当前Editer的下拉列?如果当前面没有昄的用黑体表示)
Ctrl+/(键? 折叠当前cM的所有代?br />Ctrl+×(键? 展开当前cM的所有代?br />Ctrl+Space 代码助手完成一些代码的插入(但一般和输入法有冲突,可以修改输入法的热键,也可以暂用Alt+/来代?
Ctrl+Shift+E 昄理当前打开的所有的View的管理器(可以选择关闭,Ȁzȝ操作)
Ctrl+J 正向增量查找(按下Ctrl+J?你所输入的每个字母编辑器都提供快速匹配定位到某个单词,如果没有,则在stutes line中显C没有找C,查一个单词时,特别实用,q个功能Idea两年前就有了)
Ctrl+Shift+J 反向增量查找(和上条相?只不q是从后往前查)
Ctrl+Shift+F4 关闭所有打开的Editer
Ctrl+Shift+X 把当前选中的文本全部变呛_?br />Ctrl+Shift+Y 把当前选中的文本全部变为小?br />Ctrl+Shift+F 格式化当前代?br />Ctrl+Shift+P 定位到对于的匚wW?譬如{}) (从前面定位后面时,光标要在匚wW里?后面到前?则反?
下面的快捷键是重构里面常用的,本hp己喜Ƣ且常用的整理一??一般重构的快捷键都是Alt+Shift开头的?
Alt+Shift+R 重命?(是我自己最q的一个了,其是变量和cȝRename,比手工方法能节省很多力_?
Alt+Shift+M 抽取Ҏ (q是重构里面最常用的方法之一?其是对一大堆泥团代码有用)
Alt+Shift+C 修改函数l构(比较实用,有N个函数调用了q个Ҏ,修改一ơ搞?
Alt+Shift+L 抽取本地变量( 可以直接把一些魔法数字和字符串抽取成一个变?其是多处调用的时?
Alt+Shift+F 把Class中的local变量变ؓfield变量 (比较实用的功?
Alt+Shift+I 合ƈ变量(可能q样说有点不妥Inline)
Alt+Shift+V Ud函数和变?不怎么常用)
Alt+Shift+Z 重构的后悔药(Undo)
~辑
作用?功能 快捷?
全局 查找q替?Ctrl+F
文本~辑?查找上一?Ctrl+Shift+K
文本~辑?查找下一?Ctrl+K
全局 撤销 Ctrl+Z
全局 复制 Ctrl+C
全局 恢复上一个选择 Alt+Shift+?
全局 剪切 Ctrl+X
全局 快速修?Ctrl1+1
全局 内容辅助 Alt+/
全局 全部选中 Ctrl+A
全局 删除 Delete
全局 上下文信?Alt+Q?br />Alt+Shift+?
Ctrl+Shift+Space
Java~辑?昄工具提示描述 F2
Java~辑?选择装元素 Alt+Shift+?
Java~辑?选择上一个元?Alt+Shift+?
Java~辑?选择下一个元?Alt+Shift+?
文本~辑?增量查找 Ctrl+J
文本~辑?增量逆向查找 Ctrl+Shift+J
全局 _脓 Ctrl+V
全局 重做 Ctrl+Y
查看
作用?功能 快捷?
全局 攑֤ Ctrl+=
全局 ~小 Ctrl+-
H口
作用?功能 快捷?
全局 Ȁzȝ辑器 F12
全局 切换~辑?Ctrl+Shift+W
全局 上一个编辑器 Ctrl+Shift+F6
全局 上一个视?Ctrl+Shift+F7
全局 上一个透视?Ctrl+Shift+F8
全局 下一个编辑器 Ctrl+F6
全局 下一个视?Ctrl+F7
全局 下一个透视?Ctrl+F8
文本~辑?昄标尺上下文菜?Ctrl+W
全局 昄视图菜单 Ctrl+F10
全局 昄pȝ菜单 Alt+-
D
作用?功能 快捷?
Java~辑?打开l构 Ctrl+F3
全局 打开cd Ctrl+Shift+T
全局 打开cd层次l构 F4
全局 打开声明 F3
全局 打开外部javadoc Shift+F2
全局 打开资源 Ctrl+Shift+R
全局 后退历史记录 Alt+?
全局 前进历史记录 Alt+?
全局 上一?Ctrl+,
全局 下一?Ctrl+.
Java~辑?昄大纲 Ctrl+O
全局 在层ơ结构中打开cd Ctrl+Shift+H
全局 转至匚w的括?Ctrl+Shift+P
全局 转至上一个编辑位|?Ctrl+Q
Java~辑?转至上一个成?Ctrl+Shift+?
Java~辑?转至下一个成?Ctrl+Shift+?
文本~辑?转至?Ctrl+L
搜烦
作用?功能 快捷?
全局 出现在文件中 Ctrl+Shift+U
全局 打开搜烦对话?Ctrl+H
全局 工作Z的声?Ctrl+G
全局 工作Z的引?Ctrl+Shift+G
文本~辑
作用?功能 快捷?
文本~辑?改写切换 Insert
文本~辑?上滚?Ctrl+?
文本~辑?下滚?Ctrl+?
文g
作用?功能 快捷?
全局 保存 Ctrl+X
Ctrl+S
全局 打印 Ctrl+P
全局 关闭 Ctrl+F4
全局 全部保存 Ctrl+Shift+S
全局 全部关闭 Ctrl+Shift+F4
全局 属?Alt+Enter
全局 新徏 Ctrl+N
目
作用?功能 快捷?
全局 全部构徏 Ctrl+B
源代?br />作用?功能 快捷?
Java~辑?格式?Ctrl+Shift+F
Java~辑?取消注释 Ctrl+\
Java~辑?注释 Ctrl+/
Java~辑?d导入 Ctrl+Shift+M
Java~辑?l织导入 Ctrl+Shift+O
Java~辑?使用try/catch块来包围 未设|,太常用了Q所以在q里列出,自己讄?br />也可以用Ctrl+1自动修正?
q行
作用?功能 快捷?
全局 单步q回 F7
全局 单步跌 F6
全局 单步跛_ F5
全局 单步跛_选择 Ctrl+F5
全局 调试上次启动 F11
全局 l箋 F8
全局 使用qo器单步执?Shift+F5
全局 d/去除断点 Ctrl+Shift+B
全局 昄 Ctrl+D
全局 q行上次启动 Ctrl+F11
全局 q行臌 Ctrl+R
全局 执行 Ctrl+U
重构
作用?功能 快捷?
全局 撤销重构 Alt+Shift+Z
全局 抽取Ҏ Alt+Shift+M
全局 抽取局部变?Alt+Shift+L
全局 内联 Alt+Shift+I
全局 Ud Alt+Shift+V
全局 重命?Alt+Shift+R
全局 重做 Alt+Shift+Y
Struts2与Struts1的对?/b>
来源Qstruts2开发组 译QtianxinetQ胖_
Action c?
?Struts1要求Actioncȝ承一个抽象基cRStruts1的一个普遍问题是使用抽象cȝE而不是接口?
?Struts 2 Actioncd以实C个Action接口Q也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类d?常用的接口。Action接口不是必须的,M有execute标识的POJO对象都可以用作Struts2的Action对象?
U程模式:
?Struts1 Action是单例模式ƈ且必LU程安全的,因ؓ仅有Action的一个实例来处理所有的h。单例策略限制了Struts1 Action能作的事Qƈ且要在开发时特别心。Action资源必须是线E安全的或同步的?
?Struts2 Action对象为每一个请求生一个实例,因此没有U程安全问题。(实际上,servlet容器l每个请求生许多可丢弃的对象,q且不会D性能和垃圑֛攉题)
Servlet 依赖:
?Struts1 Action 依赖于Servlet API ,因ؓ当一个Action被调用时HttpServletRequest ?HttpServletResponse 被传递给executeҎ?
?Struts 2 Action不依赖于容器Q允许Actionq容器单独被测试。如果需要,Struts2 Action仍然可以讉K初始的request和response。但是,其他的元素减或者消除了直接讉KHttpServetRequest ?HttpServletResponse的必要性?
可测?
?试Struts1 Action的一个主要问题是executeҎ暴露了servlet APIQ这使得试要依赖于容器Q。一个第三方扩展Q-Struts TestCaseQ-提供了一套Struts1的模拟对象(来进行测试)?
?Struts 2 Action可以通过初始化、设|属性、调用方法来试Q“依赖注入”支持也使测试更Ҏ?
捕获输入:
?Struts1 使用ActionForm对象捕获输入。所有的ActionForm必须l承一个基cR因为其他JavaBean不能用作ActionFormQ开发者经常创建多余的cL莯入。动态BeanQDynaBeansQ可以作为创ZlActionForm的选择Q但是,开发者可能是在重新描q?创徏)已经存在的JavaBeanQ仍然会D有冗余的javabeanQ?
?Struts 2直接使用Action属性作入属性,消除了对W二个输入对象的需求。输入属性可能是有自??属性的rich对象cd。Action属性能够通过 web面上的taglibs讉K。Struts2也支持ActionForm模式。rich对象cdQ包括业务对象,能够用作输入/输出对象。这U?ModelDriven Ҏ简化了taglib对POJO输入对象的引用?
表达式语aQ?/b>
?Struts1 整合了JSTLQ因此用JSTL EL。这UEL有基本对象图遍历Q但是对集合和烦引属性的支持很弱?
?Struts2可以使用JSTLQ但是也支持一个更强大和灵zȝ表达式语aQ-"Object Graph Notation Language" (OGNL).
l定值到面QviewQ?
?Struts 1使用标准JSP机制把对象绑定到面中来讉K?
?Struts 2 使用 "ValueStack"技术,使taglib能够讉KD不需要把你的面QviewQ和对象l定h。ValueStack{略允许通过一pd名称相同但类型不同的属性重用页面(viewQ?
cd转换Q?/b>
?Struts 1 ActionForm 属性通常都是Stringcd。Struts1使用Commons-Beanutilsq行cd转换。每个类一个{换器Q对每一个实例来说是不可配置的?
?Struts2 使用OGNLq行cd转换。提供基本和常用对象的{换器?
校验Q?/b>
?Struts 1支持在ActionForm的validateҎ中手动校验,或者通过Commons Validator的扩展来校验。同一个类可以有不同的校验内容Q但不能校验子对象?
?Struts2支持通过validateҎ和XWork校验框架来进行校验。XWork校验框架使用为属性类cd定义的校验和内容校验Q来支持chain校验子属?
Action执行的控Ӟ
?Struts1支持每一个模块有单独的Request ProcessorsQ生命周期)Q但是模块中的所有Action必须׃n相同的生命周期?
?Struts2支持通过拦截器堆栈(Interceptor StacksQؓ每一个Action创徏不同的生命周期。堆栈能够根据需要和不同的Action一起用?/p>
指定验证方式为基本验证方式:?lt;login-config>定义。例如:
定义被保护的资源Q例如下面这D声明指明了只有角色webuser才能讉K被保护的资源Q?br />
Q?Q在weblogic.xml文g中定义安全角色到weblogic server中用h用户l的映射。即指定weblogic server中的哪些实体属于安全角色。例如下面这D声明将weblogic server中的实体myGroup映射到安全角色webUserQ?br />
下面时完整的相关面Q?br /> web.xml文g
weblogic.xml文g
welcome.jsp文g
2.表单验证方式
使用表单验证方式q行web应用E序的n份验证,需要开发者定义一个登录页面和dp|的错误处理页面。登录页面可以时html、jsp或servlet。用这U验证方式的好处时可以对E序有更q一步的控制。登录页面应该让用户输入用户名和密码Q错误处理页面应该将验证p|的信息反馈给用户。开发用表单验证方式的web应用E序的基本步骤如下?br />Q?Q编写登录页面和错误处理面Q在web应用E序的欢q页面中加入到登录页面的链接Q提C用户首先进行登录。登录页面D例:
Q?Q配|web.xml
Q?Q在weblogic.xml文g中定义安全角色到weblogic server中实体(用户或用LQ的映射。例如: