Struct2简单的应用

[b][color=red]struts2入门精讲[/color][/b]
[color=green]虽然Struts 2提供了与Struts 1的兼容,但已经不是Struts 1的升级。对于已有Struts 1开发经验的开发者而言,Struts 1的开发经验对于Struts 2并没有太大的帮助;相反,对于已经有WebWork开发经验的开发者而言,WebWork的开发经验对Struts 2的开发将有很好的借鉴意义。[/color]

[b][color=red]1.从用户请求开始[/color][/b]<%@ page language="java" contentType="text/html; charset=GBK"%>

<html>

<head>

<title>登录页面</title>

</head>

<body>

<!-- 提交请求参数的表单 -->

<form action="Login.action" method="post">

<table align="center">

<caption><h3>用户登录</h3></caption>

<tr>

<!-- 用户名的表单域 -->

<td>用户名:<input type="text" name="username"/></td>

</tr>

<tr>

<!-- 密码的表单域 -->

<td>密  码:<input type="text" name="password"/></td>

</tr>

<tr align="center">

<td colspan="2"><input type="submit" value="登录"/><input

type="reset" value="重填" /></td>

</tr>

</table>

</form>

</body>

</html>

[color=green] 注意:该表单的action属性:login.action,这个action属性比较特殊,它不是一个普通的Servlet,也不是一个动态JSP页面。当表单提交给login.action时,Struts 2的FilterDispatcher将自动起作用,将用户请求转发到对应的Struts 2 Action。
Struts 2 Action默认拦截所有后缀为.action的请求。[/color]


[b][color=red]2.创建web应用 [/color][/b]

(1)在任意目录新建一个文件夹,笔者将以该文件夹建立一个Web应用。

(2) 在第1步所建的文件夹内建一个WEB-INF文件夹。

(3) 进入Tomcat,或任何Web容器内,找到任何一个Web应用,将Web应用的WEB-INF下的web.xml文件复制到第2步所建的WEB-INF文件夹下。

(4)修改复制的web.xml文件,将该文件修改成只有一个根元素的XML文件,修改后的web.xml文件代码如下:

<?xml version="1.0" encoding="GBK"?>

<!-- web-app是Web应用配置文件的根元素,指定Web应用的Schema信息 -->

<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">

</web-app>

(5) 在第2步所建的WEB-INF路径下,新建两个文件夹:classes和lib,它们分别用于保存单个*.class文件和JAR文件。

经过上面步骤,已经建立了一个空Web应用。将该Web应用复制到Tomcat的webapps路径下,该Web应用将可以自动部署在Tomcat中。
该Web将有如下文件结构:

Struts2qs

|-WEB-INF

| |-classes

| |-lib

| |-web.xml

|-login.jsp


[b][color=red]3.实现控制器类[/color][/b]

[color=red]Struts 2下的控制器不再像Struts 1下的控制器,需要继承一个Action父类,甚至可以无需实现任何接口,Struts 2的控制器就是一个普通的POJO。[/color]

public class LoginAction{
//下面是Action内用于封装的两个属性
private String username;
priavte String password;
//username属性对应的getter方法

public String getUsername()

{

return username;

}

//username属性对应的setter方法

public void setUsername(String username)

{

this.username = username;

}

//password属性对应的getter方法

public String getPassword()

{

return password;

}

//password属性对应的setter方法

public void setPassword(String password)

{

this.password = password;

}

//处理用户请求的execute()方法
public String execute() throws Exception{
if(getUsername().equals("niu") && getPassword().equals("meng")){
return "success";
}else{
return "error";
}
}

}
[color=green]Struts 2的Action就是一个包含execute方法的普通Java类,该类里包含的多个属性用于封装用户的请求参数。[/color]

[b][color=red]4.配置Action[/color][/b]
[color=green]上面定义了Struts 2的Action,但该Action还未配置在Web应用中,还不能处理用户请求。为了让该Action能处理用户请求,还需要将该Action配置在struts.xml文件中。[/color]

<?xml version="1.0" encoding="GBK"?>

<!-- 指定Struts 2配置文件的DTD信息 -->

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd">

<!-- struts是Struts 2配置文件的根元素 -->

<struts>

<!-- Struts 2的Action必须放在指定的包空间下定义 -->

<package name="strutsqs" extends="struts-default">

<!-- 定义login的Action,该Action的实现类为lee.Action类 -->

<action name="Login" class="lee.LoginAction">

<!-- 定义处理结果和资源之间映射关系。 -->

<result name="error">/error.jsp</result>

<result name="success">/welcome.jsp</result>

</action>

</package>

</struts>

[color=green] 注:该Action将负责处理向login.action URL请求的客户端请求。该Action将调用自身的execute方法处理用户请求,如果execute方法返回success字符串,请求将被转发到/welcome.jsp页面;如果execute方法返回error字符串,则请求被转发到/error.jsp页面。[/color]

[b][color=red]5.增加视图资源完成的应用[/color][/b]

两个JSP文件分别是error.jsp页面和welcome.jsp页面,将这两个JSP页面文件放在Web应用的根路径下(与WEB-INF在同一个文件夹下)。
<%@ page language="java" contentType="text/html; charset=GBK"%>

<html>

<head>

<title>成功页面</title>

</head>

<body>

您已经登录!

</body>

</html>

[b][color=red]总结:这是一个简单的流程用户输入两个参数,即username和password,然后向login.action发送请求,该请求被FilterDispatcher转发给LoginAction处理,如果LoginAction处理用户请求返回success字符串,则返回给用户welcome.jsp页面;如果返回error字符串,则返回给用户error.jsp页面。[/color][/b]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值