废话不多说!今天来学习Struts2的相关知识。
开始咯!
首先是框架的搭建!!!
1-jar包准备。
http://struts.apache.org/ 下载struts并解压
找到对应的jar包:
struts2-core-2.*.jar struts2框架核心类库
xwork-core-2.*.jar xwork类库
ognl-3.*.jar 对象图导航语言(读写对象属性)
freemarker-2.*.jar UI标签模板语言
commons-lang-3.*.jar
commons-logging-1.*.jar 日志支持
conmons-io-2.*.jar
commons-fileupload-1.2.*.jar文件上传组件(2.1.6版后必须)
javassist-3.*.jar 开源的java字节码操作工具
-------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------
2-创建一个web工程,并将对应的jar包放在lib路径下(这个就不上图了),然后我们来配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>struts2</display-name>
<!-- struts2的核心控制器是一个 filter 类 -->
<filter>
<filter-name>struts2</filter-name>
<!-- struts2的核心控制器 -->
<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>
</web-app>
3-第三步我们来配置Struts.xml文件
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- struts.xml通常配置一些对整个项目有关的公用配置 以及引入其他的不同的模块配置文件-->
<!-- constant表示常量 配置 常量配置可以到
struts2-core.2.3.4.jar包中获得default.properties-->
<!-- 表示允许的struts2的请求后缀,有多个请求后缀可以用逗号隔开 -->
<constant name="struts.action.extension" value="do,,"/>
<!-- 开发模式将会输出更多的信息 -->
<constant name="struts.devMode" value="true"/>
<!-- 实现热部署,自动重启服务器 -->
<constant name="struts.configuration.xml.reload" value="true"/>
<!-- 一般为了分模块开发,不同的模块可以定义一个对应的xml
文件,并通过include引入到struts.xml文件中 -->
<include file="struts-user.xml"/>
</struts>
※<include file="struts-user.xml"/> 下面我们再来说明。
4-创建一个业务逻辑控制器(UserAction)
/**
*自己编写的action类可以不继承ActionSupport,不继承直接使用自己编写的类不会出错
但大多数情况下要继承ActionSupport类或者实现Action接口,因为ActionSupport类中
封装了大多需要的常量,继承后可以直接使用这些常量而不需要自己再去定义了。
*/
public class UserAction extends ActionSupport {
private User user; //一个普通的javabean,里面只写了name和password属性,并提供了getter,setter方法,这里不贴代码了。
public String login(){//登录的方法,没有判断,直接请求过来就返回一个逻辑视图名 SUCCESS
System.out.println("login======="+user);
return SUCCESS;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
5-现在到我们的struts-user.xml上场了
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="user" extends="struts-default">
<action name="login" class="org.jay.struts2.action.UserAction"
method="login">
<result>index.html</result>
<result name="error">error.jsp</result>
<!-- 一般struts框架在执行出现异常的时候将返回一个input -->
<result name="input">error.jsp</result>
</action>
</package>
</struts>
#package表示一个包,为了方便项目的分模块开发,一般将对相同的数据的操作放在同一个包中进行管理。#一个struts.xml文件中可以存在多个不同名称的package
package中可以存在多个不同名称的action
package的name表示一个分区不同包的名称
extends表示本package继承一个什么父包
action表示指定一个不同的请求处理
class表示请求的业务逻辑处理的具体类
method表示当请求本action的时候,执行class(业务逻辑类)中的什么方法,如果没有指定method将默认执行execute方法。
result表示对应的响应客户端资源,当中的name表示逻辑名,将和UserAction类中的login方法返回的字符串进行匹配,匹配上了就返回result中对应的资源去响应客户端,当name没有指定的时候默认表示 success 注意:逻辑视图名,对大小写敏感!
struts-default是struts框架的一个默认配置包,我们继承这个包可以非常方便的使用struts框架提供的通用功能。
5-好了,基本上就这样了,一个简单的struts程序就搞定了! 再上个登录的界面吧!
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录</title>
</head>
<body>
<h1>登录</h1>
<form action="login" method="get"> //注意这里的login要和struts-user.xml文件中的action中的name同名
<table width="200" border="1">
<tr>
<td>
用户名:
</td>
<td>
<input type="text" name="user.name">
</td>
</tr>
<tr>
<td>
密 码:
</td>
<td>
<input type="password" name="user.password">
</td>
</tr>
<tr>
<td>
<input type="submit" value="登录">
</td>
<td>
<input type="reset" value="重置">
</td>
</tr>
</table>
</form>
</body>
</html>
--------------------------------------------------------------------------------------------------------------------------------------------------
最后希望能帮助到刚接触struts的童鞋!如有错漏之处,希望大家指出!不胜感激!我们共同进步!
--------------------------------------------------------------------------------------------------------------------------------------------------