该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-12-29
servlet 2.4版本是用xml schema做的验证吧,最初为了stripes用的2.4,不少地方都别扭,web.xml在eclipse里一直显示有错(插件没更新....),升级的要小心。
|
|
返回顶楼 | |
发表时间:2009-12-29
最后修改:2009-12-29
Foxswily 写道 servlet 2.4版本是用xml schema做的验证吧,最初为了stripes用的2.4,不少地方都别扭,web.xml在eclipse里一直显示有错(插件没更新....),升级的要小心。
|
|
返回顶楼 | |
发表时间:2009-12-31
LZ,我在web.xml配置中增加<dispatcher>FORWARD</dispatcher>这句配置后,发送请求就报404错误啊!
我的项目用的是ssh+tomcat+mysql,我用的是struts2。 想请教下是怎么回事呢?是还需要配置什么地方吗? |
|
返回顶楼 | |
发表时间:2009-12-31
最后修改:2009-12-31
vera_sq 写道 LZ,我在web.xml配置中增加<dispatcher>FORWARD</dispatcher>这句配置后,发送请求就报404错误啊!
我的项目用的是ssh+tomcat+mysql,我用的是struts2。 想请教下是怎么回事呢?是还需要配置什么地方吗? 两个都配置起来,本来以为FORWARD是包含REQUEST。 <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.htm</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping> 刚我试过了,可以用的 |
|
返回顶楼 | |
发表时间:2009-12-31
向楼主致敬 学习 我学到东西了
|
|
返回顶楼 | |
发表时间:2009-12-31
luckaway 写道 两个都配置起来,本来以为FORWARD是包含REQUEST。 <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.htm</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping> 刚我试过了,可以用的 我照你的配了报错啦 500 错误 贴一点错误 javax.servlet.ServletException: Filter execution threw an exception org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:154) org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186) com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:361) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265) org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52) org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:468) |
|
返回顶楼 | |
发表时间:2009-12-31
hanjiangit 写道 luckaway 写道 两个都配置起来,本来以为FORWARD是包含REQUEST。 <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.htm</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping> 刚我试过了,可以用的 我照你的配了报错啦 500 错误 贴一点错误 javax.servlet.ServletException: Filter execution threw an exception org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:154) org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186) com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:361) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:265) org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52) org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:468) 你是不是tomcat版本太低了! dispatcher的特性是servlet2.4规范里加的! tomcat版本和servlet规范的对应 http://tomcat.apache.org/whichversion.html |
|
返回顶楼 | |
发表时间:2010-01-01
luckaway 写道 网上已经有很多关于redirect和forward区别的文章,更多的都是只是一些概念上的描述,虽然在大多情况下,知道这些就已经足够了。但也有例外:forward not working for struts2,why?我也是在工作中碰到了这个问题,才特意看了下tomcat有关这部分的源代码。深刻的了解下也无妨。
redirect和forward都是属于servlet规范的,不同的servlet容器的实现可能会有一些区别,但原理都是类似的。 redirect和forward的定义: 1. redirect(重定向):服务端发送给客户端一个重定向的临时响应头,这个响应头包含重定向之后的URL,客户端用新的URL重新向服务器发送一个请求。 2. forward(请求转向):服务器程序内部请求转向,这个特性允许前一个程序用于处理请求,而后一个程序用来返回响应。 Redirect的原理比较简单,它的定义也已经描述的很清楚了,我也不想多讲什么,就贴一段简单的代码吧! 。。。。。。。。。。。。。。。。。。 赞楼主一个,想问下lz,Tomcat中SessionListener的机制。多个Session同时创建时,是形成一个队列调用session.create方法,还是各自并发地调用session.create方法? 应该需要分析源码吧?(给我点提示也可以)谢谢啦! |
|
返回顶楼 | |
发表时间:2010-01-01
最后修改:2010-01-01
xiaolongfeixiang 写道 luckaway 写道 网上已经有很多关于redirect和forward区别的文章,更多的都是只是一些概念上的描述,虽然在大多情况下,知道这些就已经足够了。但也有例外:forward not working for struts2,why?我也是在工作中碰到了这个问题,才特意看了下tomcat有关这部分的源代码。深刻的了解下也无妨。
redirect和forward都是属于servlet规范的,不同的servlet容器的实现可能会有一些区别,但原理都是类似的。 redirect和forward的定义: 1. redirect(重定向):服务端发送给客户端一个重定向的临时响应头,这个响应头包含重定向之后的URL,客户端用新的URL重新向服务器发送一个请求。 2. forward(请求转向):服务器程序内部请求转向,这个特性允许前一个程序用于处理请求,而后一个程序用来返回响应。 Redirect的原理比较简单,它的定义也已经描述的很清楚了,我也不想多讲什么,就贴一段简单的代码吧! 。。。。。。。。。。。。。。。。。。 赞楼主一个,想问下lz,Tomcat中SessionListener的机制。多个Session同时创建时,是形成一个队列调用session.create方法,还是各自并发地调用session.create方法? 应该需要分析源码吧?(给我点提示也可以)谢谢啦! 并发的调用session.create方法的,是设置sessionId的时候通知接听器的!!! org.apache.catalina.session.StandardSession /** * Set the session identifier for this session. * * @param id The new session identifier */ public void setId(String id) { if ((this.id != null) && (manager != null)) manager.remove(this); this.id = id; if (manager != null) manager.add(this); tellNew(); } tellNew(): public void tellNew() { // Notify interested session event listeners fireSessionEvent(Session.SESSION_CREATED_EVENT, null); // Notify interested application event listeners Context context = (Context) manager.getContainer(); Object listeners[] = context.getApplicationLifecycleListeners(); if (listeners != null) { HttpSessionEvent event = new HttpSessionEvent(getSession()); for (int i = 0; i < listeners.length; i++) { if (!(listeners[i] instanceof HttpSessionListener)) continue; HttpSessionListener listener = (HttpSessionListener) listeners[i]; try { fireContainerEvent(context, "beforeSessionCreated", listener); listener.sessionCreated(event); fireContainerEvent(context, "afterSessionCreated", listener); } catch (Throwable t) { try { fireContainerEvent(context, "afterSessionCreated", listener); } catch (Exception e) { ; } manager.getContainer().getLogger().error (sm.getString("standardSession.sessionEvent"), t); } } } } 必须要保证SessionListener的实现类是线程安全的! 如果你对接听器模式不太了解的话,建议你先去学习接听器模式! SessionListener就是接听器模式 |
|
返回顶楼 | |
发表时间:2010-01-04
luckaway 写道 vera_sq 写道 LZ,我在web.xml配置中增加<dispatcher>FORWARD</dispatcher>这句配置后,发送请求就报404错误啊!
我的项目用的是ssh+tomcat+mysql,我用的是struts2。 想请教下是怎么回事呢?是还需要配置什么地方吗? 两个都配置起来,本来以为FORWARD是包含REQUEST。 <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.htm</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping> 刚我试过了,可以用的 LZ,我以前好像也有遇到过你这样的问题,不过好像Sturts2.0他的默认方式是用forward的,所以也可以不用设置的。你试试呢! |
|
返回顶楼 | |