MVC设计模型:
视图–数据的展现
模型–是应用程序的主体部分,代表了业务数据和业务逻辑
控制器–控制实体数据在视图的展示,调用模型处理业务请求
Struts.xml配置:
action:
<action name="动作名称" method="action实现的类的方法" class="类的路径">
<result>返回页面</result>
<result>返回页面</result>
</action>
action是Structs中的一个工作单元,是一个控制器,所以在配置action时应该配置逻辑视图和物理视图资源之间的映射,也就是上面的name,class,result三个元素。
可用通配符name=“Crud”和name=“Crud_*”来实现一个action对应多个方法。
package:
<package name="包名称" namespace="命名空间" extends="继承于某个包">
---------各种action方法----------
</pacage>
同一个命名空间中不能有同名的action方法,“/”表示根namepace,“”表示默认namespace。当所有namespace都找不到时就在默认namespace中找。
一个Struts.xml例子:
<?cml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://Struts.apache.org/dtds/Struts-2.0.dtd">
<Struts>
<constant name="Struts.custon.il8n.resources" value="messageResource">
<pacage name="lee" extends="Struts-default">
<action name="login" class="lee.LoginAction">
<reuslt name="input">/login.jsp</result>
<reuslt name="error">/error.jsp</result>
<reuslt name="success">/welcome.jsp</result>
</action>
</pacage>
</Struts>
web.xml配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<filter>
<filter-name>Struts</filter-name>
<filter-class>org.apache.Struts.dispatcher.ng.filter.
StrutsPerpareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Sturts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
拦截器:
在访问某个action方法之前或之后实施拦截,是一种AOP的实现。
interceptor stack(系统默认的是defaultStack) 是将拦截器按一定的顺序连接成一条链。
public abstract class AbstractInterceptor implements Interceptor;
public abstract class MethodFileterInterceptor extends AbstractInterceptor;
这两个抽象类以模板方法实现,前者提供了init()和destroy()的空实现,使用时只需要覆盖intercept()方法;二后者提供了includeMethods和excludeMethods两个属性用来过滤执行该过滤器的action方法。
配置拦截器:
<interceptors>
<interceptor name="名称" class="路径">
</interceptor>
<!--拦截器栈-->
<interceptor-stack name="名称">
<interceptor-ref name="名称" />
<interceptor-ref name="名称" />
</interceptor-stack>
</interceptors>
输入校验:
字段校验器配置:
<field name="被校验的字段">
<field-validator type="校验器名">
<param name="参数名">参数值</param>
<message>校验失败提示信息</message>
</field-vallidator>
</field>
非字段校验器配置
<validator type="校验器名">
<param name="fieldName">需要被校验字段<param>
<param name="参数名">参数值<param>
<message>校验失败提示信息</message>
</validator>
实例:
<field name="username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>必须输入名字</message>
</field-vallidator>
</field>
校验器名称:requiredstring 字符串长度大于0
int (接受参数fieldName,min,max)检测int范围
date(接受参数fieldName,min,max)检测日期范围
等等
206

被折叠的 条评论
为什么被折叠?



