struts2 初识
来源:互联网 发布:免费交友软件下载 编辑:程序博客网 时间:2024/05/21 10:37
在 struts2 中,客户端发出的所有请求都被 struts2定义的一个servlet过滤器处理。这个过滤器并不立刻将请求转发给相应的资源,而是根据struts.xml中配置的信息和请求表单的action属性值创建一个 ActionSupport 对象,并且调用配置好的方法。这个方法做好逻辑处理后,返回标识了处理结果的字符串,然后struts2会根据返回的字符串值和struts.xml中配置的信息,跳转到相应的资源。
下面是一个最简单的 struts2 体验(MyEclipse6.0):
1、首先当然是创建一个 java web 应用程序的工程,并且从官方网站下载 struts2,然后解压,并且把解压后的 lib 目录下的 struts2.0-core-2.0.11.jar、xwork-2.0.4.jar、ognl-2.6.11.jar 导入到工程中去。
注意不能把 struts2 中所有的 jar 文件全部导入到工程中去,否则很有可能会发生类名冲突。
如果觉得这三个文件名不好记,则可以用 winrar 随便打开一个 struts2 中 apps 的 war 文件,参考到里面的web-inf/lib 目录下的 jar 文件。
2、修改 web.xml 文件,将 struts2 的过滤器添加到这个 web 网站中:
<?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">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
其它的不用理会,红色部分表示这个 java web 服务器中的所有请求都被
org.apache.struts2.dispatcher.FilterDispatcher 过滤
3、编写一个登录的页面和一个处理这个登录请求的类:
login.jsp:
......
<form action="logonAction">
<table width="350px">
<tr>
<td align="right">用户名</td>
<td align="left"><input type="text" name="username" /></td>
</tr>
<tr>
<td align="right">密码</td>
<td align="left"><input type="password" name="password" /></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="登录" />
</td>
</tr>
</table>
</form>
......
LogonAction.java
package com.zhimin.struts;
import com.opensymphony.xwork2.ActionSupport;
public class LogonAction extends ActionSupport{
// 表单数据
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{
// 验证登录,如果成功则返回"success",否则返回"error"
if(username != null && username.equals("zhimin") && password != null && password.equals("pass"))
return "success";
else
return "error";
}
}
4、再创建两个 jsp 文件:logonOK.jsp 和 logonError.jsp,内容随意,主要用于区分登录成功和登录失败(其实简单地用 html 文件也可以)
5、在src目录下创建一个struts.xml文件,录入内容如下:
<?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>
<include file="struts-default.xml"/>
<package name="struts2.0_test" extends="struts-default">
<action name="logonAction" class="com.zhimin.struts.LogonAction" method="execute">
<result name="success">/logonOK.jsp</result>
<result name="error">/logonError.jsp</result>
</action>
</package>
</struts>
OK,到这里应该就算是完成了,用 MyEclipse 发布并启动 web 服务之后,访问 login.jsp,输入用户名和密码应该能够跳转到相应的页面。
分析一下程序的整个运行流程应该如下:
· 客户端提交登录请求,请示的表单数据包括了:username、password,还有表单的 action 属性(值为logonAction)
· 由于 web.xml 配置了org.apache.struts2.dispatcher.FilterDispatcher过滤器,它过滤所有的请求(/*),因此客户端请示被它“拦截”了。
· 过滤器发现客户端表单的 action 属性为 logonAction,因此它会到 struts.xml 配置文件中找 name 属性值为 logonAction 的 action 节点
· 找到这个节点后,再创建这个节点中由 class 属性值指定的类的对象
· 调用这个对象的 setUsername 和 setPassword 方法,将表单域 username 和 password 的值填充到这个对象中去
· 这个 action 节点还有一个 method 属性,值为 execute,因此过滤器还将调用这个对象的 execute 方法
· 过滤器再这个方法根据返回的字符串,和 action 节点的子节点 result 进行比较,如果 result 子节点的 name 属性值和返回的字符串相等,则跳到 result 节点指定的页面。
- struts2 初识
- 初识Struts2
- 初识struts2
- 初识struts2
- 初识Struts2
- Struts2初识
- 初识Struts2
- Struts2初识
- Struts2初识
- 初识Struts2
- 初识 Struts2
- 初识Struts2
- struts2初识
- (1)Struts2-初识Struts2
- Struts2 初识(一)
- Struts2 初识(二)
- Struts2初识(三) ---> interceptors
- Struts2之ValueStack(初识)
- ajax的几个状态值
- C#接口
- 一些基础的Oracle DBA笔试题和面试题目
- 对不起,我爱你
- IUSR_计算机名和IWAM_计算机名帐户的用户名和密码
- struts2 初识
- c#使用接口
- Oracle运算:intersect和minus运算
- CSDN缺人才吗??
- 连接字符串大全
- exec()&fork()配合使用运行不同的进程
- C#设置窗体打开位置(在显示器的右下角打开)
- ThinkPad知识大全
- 在工作中,愤怒都是因为恐惧