Struts2-------领域对象
领域对象 这个词汇是我在刚开始学习Struts2的时候接触到的,然后再网上查找了一些相关文档,说的最多的就是领域模型。说的挺文字的,自己还是不明白。Model也可说是“领域对象”,包含属性和行为。
好了,这个问题接下来我在研究吧,还是写一个自己的struts2项目吧。
我用的软件是idea2016.3.2版的
第一步需要创建一个MAVEN-WEB项目,在pom.xml文件中导入节点
............ <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>2.5.10</version> </dependency>
这个版本是现在的最高版本。
第二步创建配置文件,在这里你可以去下载一个struts-2.3.24-all的jar包,这里面有你需要的哪些配置文件,如果你要手写的话,我也是非常支持的。
web.xml:
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
在这里你要注意的是:<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
这个节点可能跟你学习到的有点不同,你可以做下比较:
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
在我这个版本里面是没有.ng的这点要注意。有可能高版本给封装了。
这两步配置完成之后,你就可以书写action类了
package cn.struts2.entity; import com.opensymphony.xwork2.ActionSupport; import java.util.ArrayList; import java.util.List; /** * Created by accp on 2017/2/28. */ public class IteratorAction extends ActionSupport { private List<String> list; public List<String> getList() { return list; } public void setList(List<String> list) { this.list = list; } @Override public String execute() throws Exception{ list=new ArrayList<String>(); list.add("Marry"); list.add("Join"); list.add("Bob"); list.add("Jack"); return "1"; } }
然后接下来配置struts.xml文件,
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>
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default">
<action name="aa" class="cn.struts2.entity.IteratorAction">
<result name="1">success.jsp</result>
<result name="input">index.jsp</result>
</action>
</package>
</struts>
<action>节点里面的name属性对应的是逻辑名称,这里需要与你的jsp页面上的action=“aa”对应。
.jsp页面:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@taglib prefix="s" uri="/struts-tags" %> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page isELIgnored="false" %> <html> <body> <h2>Hello World!</h2> <%--<s:property value="name"/>--%> <s:fielderror fieldName="uname"></s:fielderror>* <s:form action="aa" method="POST" namespace="/"> 请输入用户名:<s:textfield name="name"></s:textfield> 请输入密 码:<s:textfield name="pwd"></s:textfield> <s:submit value="登录"></s:submit> </s:form> ${sessionScope.uname} </body> </html>
在领域对象IteratorAction里面进行逻辑判断,看看该执行哪个后续的操作。
Struts2还提供了另一种直接使用领域对象的方式,就是让action实现com.opensymphony.xwork2.ModelDriven接口,ModelDriven让你可以直接操作应用程序中的领域对象,允许你在web层和业务逻辑层使用相同的对象。
在ModelDriven接口中只有一个方法:
public T getModel(),该方法返回一个用于接受用户输入类型数据的模型对象。这个模型对象中的属性可以直接通过属性名来访问。
具体的实现工作就不在这里演示了。有什么问题可以留言,交流交流。