Strust2 的入门与基本配置
首先,我们要官方去下载一个Struts2 ,下载网站是:http://struts.apache.org/
我使用的版本是struts-2.2.1.1
注:JDK必需要使用1.5及以上的版本
下载后解压:里面文件夹
apps :一些例子,可以运行的
Docs: 文档
Lib:需要使用的Jar包
Src:源文件
搭一个简单的Struts2开发环境
IDE:Eclipse
Servlet Container :Tomcat 6.0
实现一个简单的登录的功能:
1.打开Eclipse,并新建一个Web项目(这个步骤不用多说了)
2.新建一个login.jsp页面,在这个页面写上简单的登录表单
<form action="login.action" method="post"> 用户名:<input type="text" name="username" /><br /> 密 码:<input type="text" name="password" /><br /> <input type="submit" value="登录" /> <input type="reset" value="重填" /> </form> |
在这里,我可以在Tomcat中运行一下(这个步骤也不需要多说)
运行后看到的结果:
|
3.接下来,到Strusts2/lib目录下将包拷贝到工程中:
(我这是在struts-2.2.1.1/apps/struts2-blank/WEB-INF/lib下拷备的)
|
4.打开web.xml,并进行修改
<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter>
<filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> |
在Strust2中,在classpath里必需要有一个struts.xml的文件,因此,在工程的Str下面,拷一个struts.xml
(拷贝struts-2.2.1.1/apps/struts2-blank/WEB-INF/src/java中的struts.xml)
|
现在的Struts中的内容
<?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>
<!--这里面的东西可以先删除--> </struts>
|
5.新建一个class 名称为LoginAction
注:(这个类没有继承任何类,也没有实现任何接口)
package com.test.action;
public class LoginAction {
private String username; //这个名字与login.jsp中的用户名一致 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 { return "success"; }
} |
6.新建一个result.jsp,登录成功后进入这个页面
${requestScope.username}<br /> ${requestScope.password} |
7.在Struts.xml中写入以下内容
<package name="login" extends="struts-default"> <!-- 这里没有method,则默认为execute --> <action name="login" class="com.test.action.LoginAction"> <!-- 这里没有name,则默认为success --> <!-- 这里没有type,则默认为dispatcher --> <result>/result.jsp</result> </action> </package> |
8.运行登录界面,则能看到结果
接下来对刚才的OA进行重新设置一下,加入一些新的功能:
1. 对login.jsp页面进行修改,在这里我就不删除刚才的页面了,重新建立一个login2.jsp页面,下面是login2.jsp页面的代码
<%@ taglib uri="/struts-tags" prefix="s"%>
这一句是导入struts2的标签,struts2中的标签会在以后的课程中讲解,这里先简单的使用一下
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!-- 这里是要导入struts2的标签 --> <%@ taglib uri="/struts-tags" prefix="s"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <!-- acion只需要写路径(这里是Struts2中的action名称,如果有空间名称,还需要把空间名称加上) textfield:是文本框,label是文本框前的文字 --> <s:form action="login"> <s:textfield name="username" label="用户名"></s:textfield> <s:textfield name="password" label="密码"></s:textfield> <s:submit name="submit" label="登录"></s:submit> </s:form> </body> </html> |
2. 对loginAction进行修改,代码如下:
package com.test.action;
import com.opensymphony.xwork2.ActionSupport; //这个位置我们继承了ActionSupport,在Struts2中,虽然可以直接写一个类,但它也//提供了很多类可供继承,使我们在使用时再加方便 public class LoginAction extends ActionSupport{
private String username; //这个名字与login.jsp中的用户名一致 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; }
//在这里,判断用户名与密码,否则返回fail public String execute() throws Exception { //这里应该进入数据库进行判断 if("admin".equals(this.getUsername())&& "123".equals(this.getPassword())){ return "success"; } this.addFieldError("username", "username is error"); return "fail"; }
//在这里,重写了父类的验证方法,判断了用户名和密码是否为空 @Override public void validate() { if(null==this.username||"".equals(this.username.trim())){ this.addFieldError("username", "username is not null"); }
if(null==this.password||"".equals(this.password.trim())){ this.addFieldError("password", "password is not null"); }
}
}
|
3. 接下来,就需要修改我们的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>
<package name="login" extends="struts-default"> <!-- 这里没有method,则默认为execute --> <action name="login" class="com.test.action.LoginAction"> <!-- 这里对应的是loginAction中的验证,只要addFieldError里面有值 ,就会回到login2.jsp页面 --> <result name="input">/login2.jsp</result> <!-- 如果loginAction返回的字符串是fail,则回到login.jsp页面 --> <result name="fail">/login2.jsp</result> <result>/result.jsp</result> </action> </package>
<!-- Add packages here -->
</struts>
|
把以上三步写完,我们就可以看到运行后的结果了:
|
注:从上面所有看到,使用struts2的时候,表单样式已经排好了,因为在struts中使用了模板技术,想了解可以去看一下,这里不介绍。
在不填写参数的情况下,我们点击Submit,出现以下结果:
|
如果输入错误的信息:出现的结果是
|
如果输入正确的信息:即用户名admin 密码123,则进行result页面
|
以上就是我们搭建好的第一个struts2的程序,当然,其中很多内容都没有解释得很清楚,不过,我们只是搭建出一个简单的struts2出来,在以后会对其中的内容进行详细的讲解。