飛舞的幻想

          常用鏈接

          統(tǒng)計

          Google Adsense

          Zanox FWHX

          花個明白

          最新評論

          一個WebWork實現(xiàn)的簡單登錄過程以及遇到問題并附代碼

          1.login.jsp中點擊submit按紐后,請求將被發(fā)送到web容器的login.action,
          2.web容器檢索web.xml,通過
          <servlet-mapping>
          ??????? <servlet-name>webwork</servlet-name>
          ??????? <url-pattern>*.action</url-pattern>
          ??? </servlet-mapping>

          這一段得到webwork關(guān)鍵字,再通過
          ??? <servlet>
          ??????? <servlet-name>webwork</servlet-name>
          ??????? <servlet-class>
          ??????????? com.opensymphony.webwork.dispatcher.ServletDispatcher
          ??????? </servlet-class>

          ??????? <load-on-startup>1</load-on-startup>
          ??? </servlet>

          將請求轉(zhuǎn)發(fā)給com.opensymphony.webwork.dispatcher.ServletDispatcher類來處理,這個類會讀取xwork.xml文件
          3.通過和最初login.jsp提交的"login.action"中去掉web.xml中的定義的".action", 得到"login",在xwork.xml中的
          ??????? <action name="login" class="com.cdpgc.salary.LoginAction">
          ??????????? <result name="failed" type="dispatcher">login-failed.jsp</result>
          ??????????? <result name="success" type="dispatcher">login-success.jsp</result>
          ??????? </action>

          找到"login"的定義,并尋找com.cdpgc.salary.LoginAction來處理這個請求,當該對象的execute()方法返回
          <result>節(jié)點"name"屬性定義的字符串的時候,將結(jié)果使用某個jsp來響應(yīng).這里是
          success->login-success.jsp
          failed->login-failed.jsp
          4.兩個jsp中使用了
          <ww:property value="user" />

          來訪問處理類(com.cdpgc.salary.LoginAction)的屬性,它依賴于
          <%@ taglib uri="webwork" prefix="ww" %>

          定義的標簽庫,而這個標簽庫定義中的uri依賴于web.xml中的
          ??? <taglib>
          ??????? <taglib-uri>webwork</taglib-uri>
          ??????? <taglib-location>
          ??????????? /WEB-INF/lib/webwork-2.1.7.jar
          ??????? </taglib-location>
          ??? </taglib>

          定義的taglib-uri名稱

          另外,在LoginAction.java中webwork會將發(fā)出請求的form中的值--------在<input type='xxx' name='xxx'>中的值
          填入到自己的屬性中(如果有同名屬性的化),這樣我們可以獲得請求參數(shù).在處理完畢后,同樣可以設(shè)置它,
          而在結(jié)果jsp中,webwork又會將該值提供給jsp訪問,當然還是基于名稱相同.

          遇到問題
          一、webwork jar文件添加,需要的Jar需要添加完備。
          二、java.lang.NoSuchMethodError: javax.xml.transform.dom.DOMResult.getNextSibling()Lorg/w3c/dom/Node;
          ??? org.apache.xalan.transformer.TransformerIdentityImpl.createResultContentHandler(TransformerIdentityImpl.java:199)
          ??? org.apache.xalan.transformer.TransformerIdentityImpl.setDocumentLocator(TransformerIdentityImpl.java:880)
          ??? com.opensymphony.xwork.util.DomHelper$DOMBuilder.setDocumentLocator(DomHelper.java:233)
          ??? com.opensymphony.xwork.util.location.LocationAttributes$Pipe.setDocumentLocator(LocationAttributes.java:302)
          ??? com.opensymphony.xwork.util.DomHelper$StartHandler.setDocumentLocator(DomHelper.java:292)
          ??? org.apache.xerces.parsers.AbstractSAXParser.startDocument(Unknown Source)
          ??? org.apache.xerces.impl.dtd.XMLDTDValidator.startDocument(Unknown Source)
          ??? org.apache.xerces.impl.XMLDocumentScannerImpl.startEntity(Unknown Source)
          ??? org.apache.xerces.impl.XMLVersionDetector.startDocumentParsing(Unknown Source)
          ??? org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
          ??? org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
          ??? org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
          ??? org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
          ??? javax.xml.parsers.SAXParser.parse(Unknown Source)
          ??? com.opensymphony.xwork.util.DomHelper.parse(DomHelper.java:122)
          ??? com.opensymphony.xwork.config.providers.XmlConfigurationProvider.loadConfigurationFile(XmlConfigurationProvider.java:642)
          ??? com.opensymphony.xwork.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:91)
          ??? com.opensymphony.xwork.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:85)
          ??? com.opensymphony.xwork.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:54)
          ??? com.opensymphony.xwork.DefaultActionProxy.<init>(DefaultActionProxy.java:57)
          ??? com.opensymphony.xwork.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:46)
          ??? com.opensymphony.webwork.dispatcher.DispatcherUtils.serviceAction(DispatcherUtils.java:216)
          ??? com.opensymphony.webwork.dispatcher.ServletDispatcher.service(ServletDispatcher.java:111)
          ???
          問題原因原來是因為使用了tomcat5.0.28它里面的xml-api.jar把jdk1.5里面的DOMResult沖掉了 ,改用Tomcat的5.5版本問題解決。
          三、javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found
          javax.xml.transform.TransformerFactory.newInstance(Unknown Source)
          com.opensymphony.xwork.util.DomHelper$DOMBuilder.<clinit>(DomHelper.java:168)
          com.opensymphony.xwork.util.DomHelper.parse(DomHelper.java:116)
          com.opensymphony.xwork.config.providers.XmlConfigurationProvider.loadConfigurationFile(XmlConfigurationProvider.java:642)
          com.opensymphony.xwork.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:91)
          com.opensymphony.xwork.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:85)
          com.opensymphony.xwork.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:54)
          com.opensymphony.xwork.DefaultActionProxy.<init>(DefaultActionProxy.java:57)
          com.opensymphony.xwork.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:46)
          com.opensymphony.webwork.dispatcher.DispatcherUtils.serviceAction(DispatcherUtils.java:216)
          com.opensymphony.webwork.dispatcher.ServletDispatcher.service(ServletDispatcher.java:111)
          javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
          問題原因缺少xalan.jar文件,去http://xml.apache.org/xalan-j/index.html下載即可。

          代碼:login.jsp,loginsucess.jsp,loginfailed.jsp,LoginAction.java.
          ????? 我們登錄login.jsp,輸入用戶名,post之后,請求將提交給LoginAction處理,如果成功則返回login-success.jsp,否則返回loginfailed.jsp
          ?
          ????? login.jsp
          <html>
          <head>
          <title>WebWork Tutorial - Lesson 3 - Example 1</title>
          </head>

          <body>

          <p>
          Click the [post] button below to Login.
          </p>

          <form action="login.action" method="post">
          <p>user:<input type="text" name="user" value="" /></p>
          <p>password:<input type="password" name="password" value="" /></p>
          <p><input type="submit" value="post" /></p>
          </form>

          </body>
          </html>

          login-success.jsp

          <%@ taglib uri="webwork" prefix="ww" %>
          <html>
          <head>
          <title>welcome to salary</title>
          </head>
          <body>

          <font color="green">

          <ww:property value="user" /> has logon [SalaryQueryModule]

          </font>
          <br>



          </body>
          </html>

          login-failed.jsp

          <%@ taglib uri="webwork" prefix="ww" %>
          <html>
          <head>
          <title>failed login</title>
          </head>
          <body>
          <font color="red">
          error login by [<ww:property value="user" /> ],invalid user or pwd
          </font>
          <br>
          </body>
          </html>

          web.xml,位于web-inf目錄下
          <?xml version="1.0" encoding="UTF-8"?>
          <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
          ??? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          ??? xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
          ??? http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

          ??? <display-name>My WebWork Application</display-name>
          ??? <servlet>
          ??????? <servlet-name>webwork</servlet-name>
          ??????? <servlet-class>
          ??????????? com.opensymphony.webwork.dispatcher.ServletDispatcher
          ??????? </servlet-class>

          ??????? <load-on-startup>1</load-on-startup>
          ??? </servlet>
          ??? <servlet-mapping>
          ??????? <servlet-name>webwork</servlet-name>
          ??????? <url-pattern>*.action</url-pattern>
          ??? </servlet-mapping>
          ???
          ??? <taglib>
          ??????? <taglib-uri>webwork</taglib-uri>
          ??????? <taglib-location>
          ??????????? /WEB-INF/lib/webwork-2.1.7.jar
          ??????? </taglib-location>
          ??? </taglib>
          </web-app>

          xwork.xml位于web-inf\classes目錄下
          <!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN"
          "http://www.opensymphony.com/xwork/xwork-1.0.dtd">

          <xwork>
          ??? <!-- Include webwork defaults (from WebWork JAR). -->
          ??? <include file="webwork-default.xml" />
          ???
          ??? <!-- Configuration for the default package. -->
          ??? <package name="default" extends="webwork-default">
          ??????? <!-- Default interceptor stack. -->
          ??????? <default-interceptor-ref name="defaultStack" />
          ???????
          ??????? <!-- Action: Lesson 03: HelloAction. -->
          ??????? <action name="login" class="com.cdpgc.salary.LoginAction">
          ??????????? <result name="failed" type="dispatcher">login-failed.jsp</result>
          ??????????? <result name="success" type="dispatcher">login-success.jsp</result>
          ??????? </action>
          ??? </package>
          </xwork>

          LoginAction.java
          ?1/**//*
          ?2 * Created on 2005-8-4
          ?3 *
          ?4 * TODO To change the template for this generated file go to
          ?5 * Window - Preferences - Java - Code Style - Code Templates
          ?6 */
          ?7package com.cdpgc.salary;
          ?8
          ?9import com.opensymphony.xwork.ActionSupport;
          10
          11/**//**
          12 * @author codemyth
          13 *
          14 * TODO To change the template for this generated type comment go to Window -
          15 * Preferences - Java - Code Style - Code Templates
          16 */
          17public class LoginAction extends ActionSupport {
          18
          19??? String user;
          20??? String password;
          21
          22??? /**//*
          23???? * (non-Javadoc)
          24???? *
          25???? * @see com.opensymphony.xwork.Action#execute()
          26???? */
          27??? public String execute() throws Exception {
          28??????? // TODO verify user-password
          29??????? if (user.equals("bbb"))
          30??????????? return super.SUCCESS;
          31??????? else
          32??????????? return "failed";
          33??? }
          34??? /**//**
          35???? * @return Returns the user.
          36???? */
          37??? public String getUser() {
          38??????? return user;
          39??? }
          40??? /**//**
          41???? * @param user
          42???? *??????????? The user to set.
          43???? */
          44??? public void setUser(String user) {
          45??????? this.user = user;
          46??? }
          47??? /**//**
          48???? * @return Returns the password.
          49???? */
          50??? public String getPassword() {
          51??????? return password;
          52??? }
          53??? /**//**
          54???? * @param password
          55???? *??????????? The password to set.
          56???? */
          57??? public void setPassword(String password) {
          58??????? this.password = password;
          59??? }
          60}
          文章大部分內(nèi)容來自http://www.aygfsteel.com/codemyth/archive/2005/08/06/9453.html

          posted on 2006-12-06 14:39 飛舞的幻想 閱讀(1234) 評論(1)  編輯  收藏 所屬分類: 框架學習

          評論

          # re: 一個WebWork實現(xiàn)的簡單登錄過程以及遇到問題并附代碼 2009-06-18 10:50 tttlan

          你好,最近在學習webwork,在運行第一個 helloworld例子除了一個錯誤:

          file:/F:/webwork/webapps/WEB-INF/classes/xwork.xml:13:61
          com.opensymphony.xwork.config.providers.XmlConfigurationProvider.loadConfigurationFile(XmlConfigurationProvider.java:673)
          com.opensymphony.xwork.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:91)
          com.opensymphony.xwork.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:159)
          com.opensymphony.xwork.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:55)
          com.opensymphony.xwork.DefaultActionProxy.<init>(DefaultActionProxy.java:60)
          com.opensymphony.xwork.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:46)
          com.opensymphony.webwork.dispatcher.DispatcherUtils.serviceAction(DispatcherUtils.java:265)
          com.opensymphony.webwork.dispatcher.ServletDispatcher.service(ServletDispatcher.java:111)
          javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

          也沒說什么錯誤,我估計是加載 xwork。xml時候出錯,可又找不出哪兒錯了。麻煩你幫忙看一下。

          謝謝了  回復(fù)  更多評論   

          主站蜘蛛池模板: 松江区| 宿迁市| 潼南县| 汉寿县| 朔州市| 漳平市| 阳江市| 玛曲县| 禄劝| 武山县| 区。| 邛崃市| 玉林市| 伊川县| 吉安县| 财经| 永川市| 巴彦淖尔市| 岑溪市| 盖州市| 文山县| 双鸭山市| 惠东县| 正镶白旗| 缙云县| 冕宁县| 边坝县| 千阳县| 弥渡县| 靖远县| 长治市| 昌黎县| 大名县| 三江| 离岛区| 衡阳市| 休宁县| 林芝县| 湖南省| 交城县| 类乌齐县|