struts2入门“添加用户”小程序以程序的解读分析

最近这个过年啊,本来志气满满带了两本jQuery回去看看,结果发现书里大部分基础应用都会,然后太难的又不想看啊,没气氛啊!!!

好了,不扯了,切入正题

上一篇解决了struts2下的配置,这次就先开个小程序吧。

首先呢,这个struts2的结构得先熟悉,它是一个典型的MVC框架,业务流程我的理解如下:

恩,一个请求页面.jsp->发送请求到你的Servlet容器也就是你的服务器,请求经过“过滤器”,(在web.xml里配置,struts配置的时候需要添加的 <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>)这个过滤器来判断请求是否需要调用Action,如果需要,那么就要读取struts.xml里面对应Action配置比如这个Action类存在哪里;传给Action以后呢Action方法执行后返回结果Result,这个结果一般常见的有“SUCCESS”"INPUT",根据返回结果的标识仍然是在struts.xml配置信息里找到对应返回结果需要做的事情。

那么按照上面的思路开始写程序了:

先写一个用户类啊,这个不用解释,各种信息一看就知道干什么。


接下来就是写action类了,建立一个class  CreateUserAction.java

在这里,需要用到struts的action包

这里的execute方法是调用action时执行的默认方法,待会儿会再说明。先知道调用action是执行这个方法。

在这个方法里,判断用户名是否为空,为空就返回INPUT,不空就返回SUCCESS,这是两种action常见返回值。

这里的implements就是说本类实现Action接口  是必须的


接下来就是初步理解struts原理的环节了:

建立一个超级撮的页面,用于输入用户名和密码 CreateUser.jsp


这里注意到form标签的action属性值为createUser.action,就是说提交表单的时候要执行这个action。但是,刚才的action不是一个类吗,和这个有关系吗?别着急,表单提交执行action的时候要到struts.xml配置文件里去查找这个createUser.action在哪里:

所以,需要在struts.xml里写入:

<package name="tutorial" extends="struts-default">
    <action name="createUser" class="register.CreateUserAction">
    <result name="success">CreateResult.jsp</result>
    <result name="input">empty.jsp</result>
    </action>
    </package>

在package标签下里定义action单元 :action的名字是createUser 执行class在register包下的CreateUserAction.java

这里还可以设置method=“xx()”表明要调用这个action里的什么方法,默认就是execute()方法。。

action标签里包含返回值的类型INPUT或者SUCCESS,这两种类型都对应相应的接下来跳转到的页面。

好了,下面就是写对应的跳转页面了,上面action代码读了以后知道这个INPUT返回表示用户名为空,跳转页面empty.jsp随便写一个最最简单的小白JSP里面加一句话:用户名不得为空。就行了。现在主要说这个用户名不为空跳转到的CreateResult.jsp页面

这个页面要显示用户的username和password,由于这个页面要调用struts里的数据,那么需要在页面起始声明调用struts:

<%@ taglib prefix="s" uri="/struts-tags" %>

主体内容如下:

 <body>
    添加用户成功! <br/>
    用户名:<s:property value="user.username"/><br/>
    密码:<s:property value="user.password"/>
  </body>

<s:property是struts2的一个标签库,其会根据value里的值去查找对应的操作:

user.username分别调用action里的getUser()和User.java里的getUsername()取得数据。



posted @ 2013-02-26 15:54  leechanx  阅读(313)  评论(0编辑  收藏  举报