一竿残照.金棣 @ blogJava.net

脚往哪儿,路往哪儿

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  5 Posts :: 0 Stories :: 8 Comments :: 0 Trackbacks

   这篇文章讲述搭建笔者(一个门外汉)学习webwork的第一步-----搭建webwork环境,并测试第一个程序.

[过程]
   1.安装j2sdk.略
   2.安装tomcat,略
   3.解压webwork2.1.7,略
   
   
   4.为tomcat安装webwork支持
      拷贝webwork2.1.7.jar和${webwork_home}\core\*.jar到${tomcat_home}\sharedlib目录中.
   5.撰写login.jsp,loginsucess.jsp,loginfailed.jsp,LoginAction.java.
      我们登录login.jsp,输入用户名,post之后,请求将提交给LoginAction处理,如果成功则返回login-success.jsp,否则返回loginfailed.jsp
      我使用的eclipse3.0.1,并安装了eclipseWork插件(不过整个过程)没有合理的使用它,郁闷),
      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

 9
import 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}

61

6.发布代码
   我们可以直接制定tomcat到开发环境中读取,在${tomcat_home}\conf\catalina\localhost   目录新建一个文件example.xml,包含以下内容

<Context path="/salary" docBase="D:/tools/Develop/ide/eclipse-SDK-3.0.2-win32/eclipse/workspace/salary/webroot" unpackWAR="True" /> 

这是一个tomcat支持的xml片断 Fragment,它的名称无所谓,tomcat会读取它并将该docbase指定的目录作为名叫salary的虚拟目录.

整个过程是这样的
1.login.jsp中点击submit按纽后,请求将被发送到web容器的login.action,
2.web容器检索web.xml,通过

<servlet-mapping>
        
<servlet-name>webwork</servlet-name>
        
<url-pattern>*.action</url-pattern>
    
</servlet-mapping>

这一段得到webwork关键字,再通过

    <servlet>
        
<servlet-name>webwork</servlet-name>
        
<servlet-class>
            com.opensymphony.webwork.dispatcher.ServletDispatcher
        
</servlet-class>

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

将请求转发给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>节点"name"属性定义的字符串的时候,将结果使用某个jsp来响应.这里是
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会将发出请求的form中的值--------在<input type='xxx' name='xxx'>中的值
填入到自己的属性中(如果有同名属性的化),这样我们可以获得请求参数.在处理完毕后,同样可以设置它,
而在结果jsp中,webwork又会将该值提供给jsp访问,当然还是基于名称相同.

在整个过程中,我没有使用eclipseWork插件的任何功能,原因是---------我不会用,曾经在项目属性中设置过xwork.xml是哪个xml,但是现在设置不了了,不知道为什么,并且也不知道如何提高开发效率,希望有人能帮帮我.谢谢.




         

posted on 2005-08-06 08:15 一竿残照.金棣 @ blogJava.net 阅读(2172) 评论(3)  编辑  收藏 所属分类: webworktomcat

Feedback

# re: tomcat+webwok学习笔记.配置篇 2005-08-08 00:10 一竿残照.金棣 @ blogJava.net
碰到这样的异常
Unable to initialize TldLocationsCache: null
并且刷新页面有时候正常,有时候不正常,看来应该tld缓存造成某些时候正常的现象


原因是在jsp页面中使用了标签库,而web容器未找到指定的标签库

将tld文件或jar文件部署到web.xml中指定的位置后,问题解决,
  回复  更多评论
  

# re: tomcat+webwok学习笔记.配置篇 2005-08-12 09:51 ken
偶只使用过eclips 里面的vss插件,hoho
  回复  更多评论
  

# re: tomcat+webwok学习笔记.配置篇[未登录] 2008-11-11 10:23 redcoatjk
@一竿残照.金棣 @ blogJava.net
说的不错..  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: