最近在学习SSH框架,通过用struts实现一个简单的登陆功能,来学习struts相关知识,着重了解了struts的配置。
1、在Eclipse下创建StrutsDemo项目,并将struts2所必须的jar包导入lib目录下。
主要有如下7个jar包:commons-fileupload、commons-io、freemarker、javassiat、ognl、struts2-core、xwork。
2、在src目录下建立一个struts.xml文件用于配置struts。
struts.xml内容如下:
/WEB-INF/success.jsp
/WEB-INF/login.jsp
主要属性说明:
package-name:用于区别不同的package;必须是唯一的、可用的变量名;用于其它package来继承;
package--namespace:用于减少重复代码(和struts1比较);包的namespace属性用于定义该包的命名空间,命名空间作用为访问该包下的action路径的一部分。namespace属性可以不配置,如果不指定该属性,默认的命名空间为””。
package--extends:用于继承其它package以使用里面的过滤器等东东;
action--name:用于在一个package里区别不同的action;必须是唯一的、可用的变量名;是调用action时输入路径的组成部分;
action--class:action所在的路径(包名+类名);
action--method:action所调用的方法名;
action元素method属性,默认值为method=”execute”,也就是当action接收到请求后,交给哪个方法去处理,默认的是交给execute方法去处理,当然,也可以交给其他方法。
struts-default定义了这些拦截器和Result类型,可以这么说,当包继承了struts-default才能使用struts2提供的核心功能,struts-default包是在struts2-core-2.xx.jar文件中的struts-defalut.xml中定义。struts-default.xml也是struts2默认配置文件,struts2每次都会自动加载struts-default.xml文件。
result元素主要定义视图的跳转和返回的行为及类型。
常用开关的介绍3、在web.xml中加入struts2 MVC框架启动配置
web.xml内容如下:
struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
struts2
/*
/WEB-INF/index.jsp
4、在src目录下新建LoginAction类。
LoginAction.java代码如下:
package com.demo;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = -1438866827399732426L;
private String username;
private String password;
@Override
public String execute(){
System.out.println("run execute...");
if("admin".equals(username) && "123456".equals(password)){
return SUCCESS;
}
return LOGIN;
}
public String getUsername(){
return username;
}
public void setUsername(String name){
this.username = name;
}
public String getPassword(){
return password;
}
public void setPassword(String password){
this.password = password;
}
}
注:LoginAction类继承了ActionSupport类,并且在execute方法的返回里,使用了SUCCESS和LOGIN变量。它们俩对应的值分别为:success、login(小写)。所以,在struts.xml里配置的result的name属性里,必须写为小写。要不然,会报"Could not find action or result"的错误。
LoginAction有两个属性,Struts会自动把输入框中的内容通过getter、setter方法设置进来。
提交数据后,struts会自动调用execute方法。
返回值代表结果页面的名称,具体文件路径在配置文件中配置。
ActionSupport类的作用 :struts2不要求我们自己设计的action类继承任何的struts基类或struts接口。但是我们为了方便实现我们自己的action,大多数情况下都会继承com.opensymphony.xwork2.ActionSupport类,并重写此类里的public String execute() throws Exception方法。因为此类中实现了很多的实用借口,提供了很多默认方法,这些默认方法包括国际化信息的方法、默认的处理用户请求的方法等,这样可以大大的简化Acion的开发。
Struts2中通常直接使用Action来封装HTTP请求参数,因此,Action类里还应该包含与请求参数对应的属性,并且为属性提供对应的getter和setter方法。
5、创建login.jsp页面和success.jsp页面
login.jsp代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
Insert title here
success.jsp代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
Insert title here
欢迎 !
6、经过上述步骤,登录实例已经编写完毕。运行效果如下图:
登陆界面:在访问的时候加了action后缀,我这里不加就访问不了。照说应该是不加也行的。
登陆成功界面:
7、总结:对struts2进行了入门学习,尤其仔细看了struts配置的相关资料。学习struts是掌握SSH的第一步。千里之行,始于足下嘛。