jpetstore 中的struts解析

 

Struts总结

2011.11.6

Jpetstore的实现主要用了两个重要的东西,一个是struts,另一个是ibatis

首先总结一个struts。据我了解,struts其实就是在MVC模式的基础上进行了完善的函数封装。使得我们更加高效的进行Web应用开发。因此,struts就是面向对象的设计,也就是一个个功能齐全的类。所以,使用很方便。

struts能够很好的分离出业务逻辑层,使得jsp与事务处理之间交叉更少,使得逻辑流程更加清晰明了。同时struts很好的实现了请求的过滤和请求的跳转。

MVC设计模式

M: Model(Business process layer),模型,操作数据的业务处理层,并独立于表现层V,主要设计数据库的各种操作

V: View(Presentation layer),视图,就是用户交互界面,在VC之间进行数据的交互

C: Controller(Control layer),控制器,也就是视图层和模型层桥梁,控制数据的流向,接受视图层发出的事件,并重绘视图。

Struts 提供的API

M:由于不同的web开发,会有不同业务逻辑,因此就没有提供相应的类。因此ibatis的引进完善这个体系,使得数据的存储变得更加灵活。

VStruts提供了action form创建form bean, 用于在controllerview间传输数据。

C:Struts提供了一个核心的控制器ActionServlet,通过这个核心的控制器来调用其他用户注册了的自定义的控制器Action,自定义Action需要符合Struts的自定义Action规范,还需要在struts-config.xml的特定配置文件中进行配置,接收JSP输入字段形成Action form,然后调用一个Action控制器。Action控制器中提供了model的逻辑接口。

对比jpetstore上的代码(如登陆验证操作):

signonForm.jsp

  <html:form action="/shop/signon" method="POST">

    <p>Please enter your username and password.</p>

    <p>

      Username:<input type="text" name="username" value="j2ee"/>

      <br/>

      Password:<input type="password" name="password" value="j2ee"/>

    </p>

    <input type="submit" name="submit" value="Login"/>

  </html:form>

Struts-config.xml

 <form-bean name="accountBean"

 type="com.ibatis.jpetstore.presentation.AccountBean"/>

...

<action path="/shop/signon"

type="org.apache.struts.beanaction.BeanAction"

            name="accountBean" scope="session"

            validate="false">

      <forward name="success" path="/shop/index.shtml"/>

</action>

Web.xml

<servlet>

    <servlet-name>action</servlet-name>

    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

    <init-param>

      <param-name>config</param-name>

      <param-value>/WEB-INF/struts-config.xml</param-value>

    </init-param>

    <init-param>

      <param-name>debug</param-name>

      <param-value>2</param-value>

    </init-param>

    <init-param>

      <param-name>detail</param-name>

      <param-value>2</param-value>

    </init-param>

    <load-on-startup>2</load-on-startup>

  </servlet>

AccountBean.java

 public String signon() {

    account = accountService.getAccount(account.getUsername(), account.getPassword());

    if (account == null || account == null) {

      String value = "Invalid username or password.  Signon failed.";

      setMessage(value);

      clear();

      return FAILURE;

    } else {

      account.setPassword(null);

      myList = catalogService.getProductListByCategory (account.getFavouriteCategoryId());

      authenticated = true;

      return SUCCESS;

    }

  }

总的来说,struts就是一个辅助的开发工具包,能够以MVC框架来辅助开发者实现便捷的开发过程,使得我们只关注业务逻辑,而不需要去关注C层的实现过程。因为struts已经把控制层完善得很好了。我们只需要把重点放到业务逻辑上,也就是M,数据层次逻辑。

你可能感兴趣的:(jpetstore 中的struts解析)