博客园  :: 首页  :: 联系 :: 订阅 订阅  :: 管理

java struts2 开发使用小记

Posted on 2010-02-22 17:13  ╁蓝驿┲→  阅读(449)  评论(0编辑  收藏  举报

非常感谢路过和S2SH群里朋友的帮助,使得jsp struts2的能够正常的调试通过。
向来从事.net开发,也没咋学习java,jsp感觉似乎和其他asp,php 大噶有点意思,所以旧上路了。java下MyEclipse的开发并没有向微软提供的.net Vistual studio 那样方便快速上手。
down struts2-demo.rar
struts2
下面是我struts2学习搭建的测试demo过程:
1)下载struts2的lib,http://struts.apache.org/download.cgi 我们下载最新的

struts2.1.8.1版本。解压下载的文件,我们可以看到有apps、docs、lib、src和一些说明文件。

apps是提供给我们的使用案例,lib是struts2的相关类库,docs为说明文档,src为源码文件。

不同的版本设置会有不同,这点非常重要。后面我们在配置处会提到。

1)我们在MyEclipse下新建个 Web Project 项目,任意命名,我们给它叫struts2。然后配置我们的项目,使他支持struts2。打开 WebRoot 下的WEB-INF 下的web.xml 添加如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <filter>
   <filter-name>s2</filter-name>
   <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>s2</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>

2)创建我们的Web应用。 添加我们的登录测试页面。login.jsp 内容如下:

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
<html>
<head>
<title>登录页面</title>
</head>
<body>
<form action="lee/login.action" method="post">
<table align="center">
<caption><h3>111</h3></caption>
<tr>
<td>用户名:<input type="text" name="username"/></td>
</tr>
<tr>
<td>&nbsp;&nbsp;密码:<input type="text" name="password"/></td>
</tr>
<tr align="center">
<td colspan="2"><input type="submit" value="登录"/>&nbsp;<input
type="reset" value="重填" /></td>
</tr>
</table>
</form>
</body>
</html>

我们注意到表单提交的action 是 action="lee/login.action" 这里的login.action 是lee 包 package下的类名,而.action  Struts2 Action默认拦截所有后缀为.action的请求。因此,如果我们需要讲某个表单提交给Struts2 Action处理,则应该将该表单的action属性设置为*.action的格式。

接下来我们实现控制器。在src下添加package 名lee 添加 LoginAction.java 类,代码如下:

package lee;
//Struts 2 的 Action 类
public class LoginAction {
    private String username;
    private String password;
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String execute() throws Exception {
        System.out.print("a啊哦~~~");
        if (getUsername().equals("scott") && getPassword().equals("tiger")) {
            return "success";
        } else {
            return "error";
        }
    }
}
并且我们得配置我们的Action,定义Action和资源之间的映射关系。struts.xml 放在src根目录下。
代码如下:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="lee" extends="struts-default">
<action name="login" class="lee.LoginAction">
<result name="error">/error.jsp</result>
<result name="success">/welcome.jsp</result>
</action>
</package>
</struts>
最后一步,添加视图资源完成应用。添加welcome.jsp 和error.jsp 如下:

<%@ page language="java" contentType="text/html; charset=GBK"%>
<html>
<head>
<title>成功页面</title>
</head>
<body>
您已经登入!
</body>
</html>
<%@ page language="java" contentType="text/html; charset=GBK"%>
<html>
<head>
<title>出错页面</title>
</head>
<body>
出错了!
</body>
</html>
至此我们完成所有struts2的配置,你可以调试看看是否成功登录。这里是我们的工程项目文件的结构截图,见图1。
项目下载:down struts2-demo.rar
注:如果是像我这样做.net等其他语言开发的,可能对java下的jsp 的很多不太熟悉,所以要特别注意配置文件细节,比如struts.xml是放在src下面的,web.xml 是位于WebRoot/WEB-INF/下的
web.xml中如果你想我使用的struts2的lib是2.1.8.1的话,那得是这个配置
<filter>
   <filter-name>struts2</filter-name>
   <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
不是
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.Struts2.dispatcher.FilterDispatcher
</ filter-class>
</filter>
初学者,不注意这些,都会带来很多不必要有找不到原因的问题。。。

长青树:http://www.tree360.cn/blog/article.asp?id=211