﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-飞舞的幻想-随笔分类-框架学习</title><link>http://www.blogjava.net/deng947/category/10030.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 18 Apr 2007 14:45:37 GMT</lastBuildDate><pubDate>Wed, 18 Apr 2007 14:45:37 GMT</pubDate><ttl>60</ttl><item><title>一个WebWork实现的简单登录过程以及遇到问题并附代码</title><link>http://www.blogjava.net/deng947/archive/2006/12/06/85843.html</link><dc:creator>飞舞的幻想</dc:creator><author>飞舞的幻想</author><pubDate>Wed, 06 Dec 2006 06:39:00 GMT</pubDate><guid>http://www.blogjava.net/deng947/archive/2006/12/06/85843.html</guid><wfw:comment>http://www.blogjava.net/deng947/comments/85843.html</wfw:comment><comments>http://www.blogjava.net/deng947/archive/2006/12/06/85843.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/deng947/comments/commentRss/85843.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/deng947/services/trackbacks/85843.html</trackback:ping><description><![CDATA[1.login.jsp中点击submit按纽后,请求将被发送到web容器的login.action,<br />2.web容器检索web.xml,通过<br />&lt;servlet-mapping&gt;<br />        &lt;servlet-name&gt;webwork&lt;/servlet-name&gt;<br />        &lt;url-pattern&gt;*.action&lt;/url-pattern&gt;<br />    &lt;/servlet-mapping&gt;<br /><br />这一段得到webwork关键字,再通过<br />    &lt;servlet&gt;<br />        &lt;servlet-name&gt;webwork&lt;/servlet-name&gt;<br />        &lt;servlet-class&gt;<br />            com.opensymphony.webwork.dispatcher.ServletDispatcher<br />        &lt;/servlet-class&gt;<br /><br />        &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;<br />    &lt;/servlet&gt;<br /><br />将请求转发给com.opensymphony.webwork.dispatcher.ServletDispatcher类来处理,这个类会读取xwork.xml文件<br />3.通过和最初login.jsp提交的"login.action"中去掉web.xml中的定义的".action", 得到"login",在xwork.xml中的<br />        &lt;action name="login" class="com.cdpgc.salary.LoginAction"&gt;<br />            &lt;result name="failed" type="dispatcher"&gt;login-failed.jsp&lt;/result&gt;<br />            &lt;result name="success" type="dispatcher"&gt;login-success.jsp&lt;/result&gt;<br />        &lt;/action&gt;<br /><br />找到"login"的定义,并寻找com.cdpgc.salary.LoginAction来处理这个请求,当该对象的execute()方法返回<br />&lt;result&gt;节点"name"属性定义的字符串的时候,将结果使用某个jsp来响应.这里是<br />success-&gt;login-success.jsp<br />failed-&gt;login-failed.jsp<br />4.两个jsp中使用了<br />&lt;ww:property value="user" /&gt;<br /><br />来访问处理类(com.cdpgc.salary.LoginAction)的属性,它依赖于<br />&lt;%@ taglib uri="webwork" prefix="ww" %&gt;<br /><br />定义的标签库,而这个标签库定义中的uri依赖于web.xml中的<br />    &lt;taglib&gt;<br />        &lt;taglib-uri&gt;webwork&lt;/taglib-uri&gt;<br />        &lt;taglib-location&gt;<br />            /WEB-INF/lib/webwork-2.1.7.jar<br />        &lt;/taglib-location&gt;<br />    &lt;/taglib&gt;<br /><br />定义的taglib-uri名称<br /><br />另外,在LoginAction.java中webwork会将发出请求的form中的值--------在&lt;input type='xxx' name='xxx'&gt;中的值<br />填入到自己的属性中(如果有同名属性的化),这样我们可以获得请求参数.在处理完毕后,同样可以设置它,<br />而在结果jsp中,webwork又会将该值提供给jsp访问,当然还是基于名称相同.<br /><br />遇到问题<br />一、webwork jar文件添加,需要的Jar需要添加完备。<br />二、java.lang.NoSuchMethodError: javax.xml.transform.dom.DOMResult.getNextSibling()Lorg/w3c/dom/Node;<br />    org.apache.xalan.transformer.TransformerIdentityImpl.createResultContentHandler(TransformerIdentityImpl.java:199)<br />    org.apache.xalan.transformer.TransformerIdentityImpl.setDocumentLocator(TransformerIdentityImpl.java:880)<br />    com.opensymphony.xwork.util.DomHelper$DOMBuilder.setDocumentLocator(DomHelper.java:233)<br />    com.opensymphony.xwork.util.location.LocationAttributes$Pipe.setDocumentLocator(LocationAttributes.java:302)<br />    com.opensymphony.xwork.util.DomHelper$StartHandler.setDocumentLocator(DomHelper.java:292)<br />    org.apache.xerces.parsers.AbstractSAXParser.startDocument(Unknown Source)<br />    org.apache.xerces.impl.dtd.XMLDTDValidator.startDocument(Unknown Source)<br />    org.apache.xerces.impl.XMLDocumentScannerImpl.startEntity(Unknown Source)<br />    org.apache.xerces.impl.XMLVersionDetector.startDocumentParsing(Unknown Source)<br />    org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)<br />    org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)<br />    org.apache.xerces.parsers.XMLParser.parse(Unknown Source)<br />    org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)<br />    javax.xml.parsers.SAXParser.parse(Unknown Source)<br />    com.opensymphony.xwork.util.DomHelper.parse(DomHelper.java:122)<br />    com.opensymphony.xwork.config.providers.XmlConfigurationProvider.loadConfigurationFile(XmlConfigurationProvider.java:642)<br />    com.opensymphony.xwork.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:91)<br />    com.opensymphony.xwork.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:85)<br />    com.opensymphony.xwork.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:54)<br />    com.opensymphony.xwork.DefaultActionProxy.&lt;init&gt;(DefaultActionProxy.java:57)<br />    com.opensymphony.xwork.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:46)<br />    com.opensymphony.webwork.dispatcher.DispatcherUtils.serviceAction(DispatcherUtils.java:216)<br />    com.opensymphony.webwork.dispatcher.ServletDispatcher.service(ServletDispatcher.java:111)<br />    <br />问题原因原来是因为使用了tomcat5.0.28它里面的xml-api.jar把jdk1.5里面的DOMResult冲掉了 ，改用Tomcat的5.5版本问题解决。<br />三、javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found<br />javax.xml.transform.TransformerFactory.newInstance(Unknown Source)<br />com.opensymphony.xwork.util.DomHelper$DOMBuilder.&lt;clinit&gt;(DomHelper.java:168)<br />com.opensymphony.xwork.util.DomHelper.parse(DomHelper.java:116)<br />com.opensymphony.xwork.config.providers.XmlConfigurationProvider.loadConfigurationFile(XmlConfigurationProvider.java:642)<br />com.opensymphony.xwork.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:91)<br />com.opensymphony.xwork.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:85)<br />com.opensymphony.xwork.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:54)<br />com.opensymphony.xwork.DefaultActionProxy.&lt;init&gt;(DefaultActionProxy.java:57)<br />com.opensymphony.xwork.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:46)<br />com.opensymphony.webwork.dispatcher.DispatcherUtils.serviceAction(DispatcherUtils.java:216)<br />com.opensymphony.webwork.dispatcher.ServletDispatcher.service(ServletDispatcher.java:111)<br />javax.servlet.http.HttpServlet.service(HttpServlet.java:802)<br />问题原因缺少xalan.jar文件,去http://xml.apache.org/xalan-j/index.html下载即可。<br /><br />代码：login.jsp,loginsucess.jsp,loginfailed.jsp,LoginAction.java.<br />      我们登录login.jsp,输入用户名,post之后,请求将提交给LoginAction处理,如果成功则返回login-success.jsp,否则返回loginfailed.jsp<br /> <br />      login.jsp<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;WebWork Tutorial - Lesson 3 - Example 1&lt;/title&gt;<br />&lt;/head&gt;<br /><br />&lt;body&gt;<br /><br />&lt;p&gt;<br />Click the [post] button below to Login.<br />&lt;/p&gt;<br /><br />&lt;form action="login.action" method="post"&gt;<br />&lt;p&gt;user:&lt;input type="text" name="user" value="" /&gt;&lt;/p&gt;<br />&lt;p&gt;password:&lt;input type="password" name="password" value="" /&gt;&lt;/p&gt;<br />&lt;p&gt;&lt;input type="submit" value="post" /&gt;&lt;/p&gt;<br />&lt;/form&gt;<br /><br />&lt;/body&gt;<br />&lt;/html&gt;<br /><br />login-success.jsp<br /><br />&lt;%@ taglib uri="webwork" prefix="ww" %&gt; <br />&lt;html&gt; <br />&lt;head&gt; <br />&lt;title&gt;welcome to salary&lt;/title&gt; <br />&lt;/head&gt; <br />&lt;body&gt; <br /><br />&lt;font color="green"&gt;<br /><br />&lt;ww:property value="user" /&gt; has logon [SalaryQueryModule]<br /><br />&lt;/font&gt;<br />&lt;br&gt;<br /><br /><br /><br />&lt;/body&gt; <br />&lt;/html&gt;<br /><br />login-failed.jsp<br /><br />&lt;%@ taglib uri="webwork" prefix="ww" %&gt; <br />&lt;html&gt; <br />&lt;head&gt; <br />&lt;title&gt;failed login&lt;/title&gt; <br />&lt;/head&gt; <br />&lt;body&gt; <br />&lt;font color="red"&gt;<br />error login by [&lt;ww:property value="user" /&gt; ],invalid user or pwd<br />&lt;/font&gt;<br />&lt;br&gt;<br />&lt;/body&gt; <br />&lt;/html&gt;<br /><br />web.xml,位于web-inf目录下<br />&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"<br />    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br />    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee <br />    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"&gt;<br /><br />    &lt;display-name&gt;My WebWork Application&lt;/display-name&gt;<br />    &lt;servlet&gt;<br />        &lt;servlet-name&gt;webwork&lt;/servlet-name&gt;<br />        &lt;servlet-class&gt;<br />            com.opensymphony.webwork.dispatcher.ServletDispatcher<br />        &lt;/servlet-class&gt;<br /><br />        &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;<br />    &lt;/servlet&gt;<br />    &lt;servlet-mapping&gt;<br />        &lt;servlet-name&gt;webwork&lt;/servlet-name&gt;<br />        &lt;url-pattern&gt;*.action&lt;/url-pattern&gt;<br />    &lt;/servlet-mapping&gt;<br />    <br />    &lt;taglib&gt;<br />        &lt;taglib-uri&gt;webwork&lt;/taglib-uri&gt;<br />        &lt;taglib-location&gt;<br />            /WEB-INF/lib/webwork-2.1.7.jar<br />        &lt;/taglib-location&gt;<br />    &lt;/taglib&gt;<br />&lt;/web-app&gt;<br /><br />xwork.xml位于web-inf\classes目录下<br />&lt;!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN"<br />"http://www.opensymphony.com/xwork/xwork-1.0.dtd"&gt;<br /><br />&lt;xwork&gt;<br />    &lt;!-- Include webwork defaults (from WebWork JAR). --&gt;<br />    &lt;include file="webwork-default.xml" /&gt;<br />    <br />    &lt;!-- Configuration for the default package. --&gt;<br />    &lt;package name="default" extends="webwork-default"&gt;<br />        &lt;!-- Default interceptor stack. --&gt; <br />        &lt;default-interceptor-ref name="defaultStack" /&gt; <br />        <br />        &lt;!-- Action: Lesson 03: HelloAction. --&gt;<br />        &lt;action name="login" class="com.cdpgc.salary.LoginAction"&gt;<br />            &lt;result name="failed" type="dispatcher"&gt;login-failed.jsp&lt;/result&gt;<br />            &lt;result name="success" type="dispatcher"&gt;login-success.jsp&lt;/result&gt;<br />        &lt;/action&gt;<br />    &lt;/package&gt;<br />&lt;/xwork&gt;<br /><br />LoginAction.java<br /> 1/**//*<br /> 2 * Created on 2005-8-4<br /> 3 *<br /> 4 * TODO To change the template for this generated file go to<br /> 5 * Window - Preferences - Java - Code Style - Code Templates<br /> 6 */<br /> 7package com.cdpgc.salary;<br /> 8<br /> 9import com.opensymphony.xwork.ActionSupport;<br />10<br />11/**//** <br />12 * @author codemyth<br />13 * <br />14 * TODO To change the template for this generated type comment go to Window -<br />15 * Preferences - Java - Code Style - Code Templates<br />16 */<br />17public class LoginAction extends ActionSupport {<br />18<br />19    String user;<br />20    String password;<br />21<br />22    /**//*<br />23     * (non-Javadoc)<br />24     * <br />25     * @see com.opensymphony.xwork.Action#execute()<br />26     */<br />27    public String execute() throws Exception {<br />28        // TODO verify user-password<br />29        if (user.equals("bbb"))<br />30            return super.SUCCESS;<br />31        else<br />32            return "failed";<br />33    }<br />34    /**//**<br />35     * @return Returns the user.<br />36     */<br />37    public String getUser() {<br />38        return user;<br />39    } <br />40    /**//**<br />41     * @param user<br />42     *            The user to set.<br />43     */<br />44    public void setUser(String user) {<br />45        this.user = user;<br />46    }<br />47    /**//**<br />48     * @return Returns the password.<br />49     */<br />50    public String getPassword() {<br />51        return password;<br />52    }<br />53    /**//**<br />54     * @param password<br />55     *            The password to set.<br />56     */<br />57    public void setPassword(String password) {<br />58        this.password = password;<br />59    }<br />60}<br />文章大部分内容来自http://www.blogjava.net/codemyth/archive/2005/08/06/9453.html<br /><img src ="http://www.blogjava.net/deng947/aggbug/85843.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/deng947/" target="_blank">飞舞的幻想</a> 2006-12-06 14:39 <a href="http://www.blogjava.net/deng947/archive/2006/12/06/85843.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts下jsp页面的一些特殊小功能以及查询语句经常犯错误</title><link>http://www.blogjava.net/deng947/archive/2006/05/17/46666.html</link><dc:creator>飞舞的幻想</dc:creator><author>飞舞的幻想</author><pubDate>Wed, 17 May 2006 10:06:00 GMT</pubDate><guid>http://www.blogjava.net/deng947/archive/2006/05/17/46666.html</guid><wfw:comment>http://www.blogjava.net/deng947/comments/46666.html</wfw:comment><comments>http://www.blogjava.net/deng947/archive/2006/05/17/46666.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/deng947/comments/commentRss/46666.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/deng947/services/trackbacks/46666.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1、  								jsp				页面的保留字问题（主要是表格的问题）								&lt;				TABLE 				class				=				"border"				&gt;																																		&lt;				TBODY				&gt;						...&nbsp;&nbsp;<a href='http://www.blogjava.net/deng947/archive/2006/05/17/46666.html'>阅读全文</a><img src ="http://www.blogjava.net/deng947/aggbug/46666.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/deng947/" target="_blank">飞舞的幻想</a> 2006-05-17 18:06 <a href="http://www.blogjava.net/deng947/archive/2006/05/17/46666.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>STRUTS下几种IMAGE标签的使用以及区别</title><link>http://www.blogjava.net/deng947/archive/2006/04/14/41139.html</link><dc:creator>飞舞的幻想</dc:creator><author>飞舞的幻想</author><pubDate>Fri, 14 Apr 2006 09:48:00 GMT</pubDate><guid>http://www.blogjava.net/deng947/archive/2006/04/14/41139.html</guid><wfw:comment>http://www.blogjava.net/deng947/comments/41139.html</wfw:comment><comments>http://www.blogjava.net/deng947/archive/2006/04/14/41139.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.blogjava.net/deng947/comments/commentRss/41139.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/deng947/services/trackbacks/41139.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一 HTML － Basic Image 标签 &lt;IMG src="../images/03.gif" border="0"&gt; 所有属性包括 Basic 属性包括 &nbsp;alt &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Id &nbsp;&...&nbsp;&nbsp;<a href='http://www.blogjava.net/deng947/archive/2006/04/14/41139.html'>阅读全文</a><img src ="http://www.blogjava.net/deng947/aggbug/41139.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/deng947/" target="_blank">飞舞的幻想</a> 2006-04-14 17:48 <a href="http://www.blogjava.net/deng947/archive/2006/04/14/41139.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>