struts 学习笔记

struts 学习笔记

2005-08-12  (原创)struts 学习笔记

1。struts多配置文件实现
目    的:
 A:多人开发时,各自有自己的struts配置文件。
 B:避免业务很多时struts-config.xml文件越来越大,并有利于对业务的管理。
配置原则:
 将公共的配置放到struts-config.xml中,和业务密切相关的配置放到struts-config-abc.xml中
实现要点:
 A:避免各自的struts-config文件中使用相同的action和form名称。
 B:需要在web.xml文件中配置如下,确保多个struts配置文件被解析并加载。
 <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,/WEB-INF/struts-config_abc.xml</param-value>
         </init-param>
  <load-on-startup>1</load-on-startup>
     </servlet>
 <servlet-mapping>
  <servlet-name>action</servlet-name>
  <url-pattern>*.do</url-pattern>
 </servlet-mapping>

2。国际化实现
目    的:
根据不同的浏览器语言环境,自动选择合理的语言界面.或者用户根据需要手动选择不用的语言界面.
配置原则:
属性文件命名规范:
ApplicationResources.properties
ApplicationResources_en.properties
ApplicationResources_zh_CN.properties
实现要点:
A。在 struts-config.xml 文件中,说明默认属性文件的位置,如下:
<message-resources parameter="com.my.webproject.util.ApplicationResources" />
B。遵守属性文件命名规范
页面实现范例:
<bean:message key="prompt.username"/> : <font COLOR="#FF0000"><B><bean:message key="error.notuser"/></B></font>

3。struts验证框架validation的运用
目的:页面验证交给validation来实现.
配置原则:
实现要点:
A.需要验证的页面对应的form类必须继承org.apache.struts.validator.ValidatorForm
B.确保validation.xml文件中的<form name="">中name的值必须和struts-config.xml文件中
  <form-bean name="" type="">的name值一致
形如:
struts-config.xml
        <form-bean name="loginForm" type="com.my.webproject.view.LoginForm">
            <form-property name="code" type="java.lang.String" />
            <form-property name="name" type="java.lang.String" />
        </form-bean>
validation.xml
 <form name="loginForm">
            <field property="code"
                    depends="required,mask,minlength,maxlength"
                    bundle="alternate">
                <arg0   key="prompt.code"/>
                <arg1   key="${var:minlength}" name="minlength"
                   resource="false"/>
                <arg2   key="${var:maxlength}" name="maxlength"
                   resource="false"/>
                <var>
                       <var-name>mask</var-name>
                       <var-value>^[0-9]*$</var-value>
                </var>
                <var>
                    <var-name>maxlength</var-name>
                    <var-value>6</var-value>
                </var>
                <var>
                    <var-name>minlength</var-name>
                    <var-value>1</var-value>
                </var>
            </field>
        </form>

C.在struts-config.xml文件中配置验证插件,如下:
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
    <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
</plug-in>

D.属性文件中需要添加错误消息的键值
# Standard error messages for validator framework checks
errors.required={0} is required.
errors.minlength={0} cannot be less than {1} characters.
errors.maxlength={0} cannot be greater than {2} characters.
errors.invalid={0} is invalid.
errors.byte={0} must be an byte.
errors.short={0} must be an short.
errors.integer={0} must be an integer.
errors.long={0} must be an long.
errors.float={0} must be an float.
errors.double={0} must be an double.
errors.date={0} is not a date.
errors.range={0} is not in the range {1} through {2}.
errors.creditcard={0} is not a valid credit card number.
errors.email={0} is an invalid e-mail address.

E.jsp页面调用
a.页面显示错误信息
<font COLOR="#FF0000"><B><html:errors/></B></font>
<html:form action="/my_login?method=find"  οnsubmit="return validateLoginForm(this);">
名称validateLoginForm由来:
"validate" + struts-config.xml文件中位置的form的name(第一个字母大写)

b.javascript验证
<html:form action="/my_login?method=find"  οnsubmit="return validateLoginForm(this);">
<html:javascript formName="loginForm"/>
名称validateLoginForm由来:
"validate" + struts-config.xml文件中对应的form的name(第一个字母大写)
<html:javascript formName="loginForm"/> 中formName的值必须完全等于struts-config.xml文件中对应的form的name


4.log4j-1.2.8配置
目的:监控后台信息,输出到指定设备-log文件或控制台
配置原则:
必须将添加log4j-1.2.8.jar包加入到工程
实现要点:
A.在web.xml文件中配置如下:
 <context-param>
  <param-name>webAppRootKey</param-name>
  <param-value>ssh.root</param-value>
 </context-param>

 <context-param>
  <param-name>log4jConfigLocation</param-name>
  <param-value>/WEB-INF/log4j.properties</param-value>
 </context-param>

 <listener>
  <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
 </listener>
B.在/WEB-INF/log4j.properties文件中配置如下:
 # For JBoss: Avoid to setup Log4J outside $JBOSS_HOME/server/default/deploy/log4j.xml!
 # For all other servers: Comment out the Log4J listener in web.xml to activate Log4J.
 log4j.rootLogger=INFO, stdout, logfile

 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
 log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - <%m>%n

 log4j.appender.logfile=org.apache.log4j.RollingFileAppender
 log4j.appender.logfile.File=${ssh.root}/WEB-INF/ssh.log
 log4j.appender.logfile.MaxFileSize=512KB
 # Keep three backup files.
 log4j.appender.logfile.MaxBackupIndex=3
 # Pattern to output: date priority [category] - message
 log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
 log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

5.客户化标签
目的:将复用性很强的功能,封装起来.便于最大限度的重用.
配置原则:严格按照*.tld文件的规范,编写对用的tld文件
实现要点:
A.
实现类继承javax.servlet.jsp.tagext.TagSupport类,并重写以下方法
public int doEndTag() throws JspException {}
public int doStartTag() throws JspException{}

实现import javax.servlet.jsp.tagext.Tag接口,实现如下方法
public void setPageContext(PageContext arg0) {}
public void setParent(Tag arg0) {}
public Tag getParent() {}
public int doStartTag() throws JspException {}
public int doEndTag() throws JspException {}
public void release() {}

B.tld文件编写如下:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>bean</shortname>
<uri>http://jakarta.apache.org/struts/tags-bean</uri>

<tag>
 <name>validateSession</name>
 <tagclass>com.my.webproject.tags.ValidateSessionTag</tagclass>
 <bodycontent>empty</bodycontent>
 <attribute>
  <name>name</name>
  <required>false</required>
  <rtexprvalue>true</rtexprvalue>
 </attribute>
 <attribute>
  <name>page</name>
  <required>false</required>
  <rtexprvalue>true</rtexprvalue>
 </attribute>
</tag>
</taglib>

C.jsp页面使用如下:
<app:validateSession />

6.struts-tiles运用
目的:统一页面布局,规格化页面
配置原则:
实现要点:
A.编写layout.jsp文件
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles"%>
<HTML>
 <HEAD>
   <TITLE>MyWebProject-VIEW</TITLE>
 </HEAD>
 <BODY>
  <TABLE WIDTH="100%" HEIGHT="100%">
   <TR>
   <TD WIDTH="150" valign="top" align="left" bgcolor="#CBDAFE">
    <tiles:insert attribute="sidebar" />
   </TD>
   <TD valign="top" height="100%" width="*">
     <TABLE WIDTH="100%" HEIGHT="100%">
     <TR>
      <TD height="15%">
        <tiles:insert attribute="header" ignore='true'/>
      </TD>
    </TR>
    <TR>
      <TD valign="top" height="*">
        <tiles:insert attribute="content" ignore='true'/>
      </TD>
    </TR>
    <TR>
      <TD valign="bottom"  height="15%">
        <tiles:insert attribute="footer" ignore='true'/>
      </TD>
    </TR>
   </TABLE>
   </TD>
   </TR>
  </TABLE>
 </BODY>
</HTML>
B.在页面文件中用如下方式使用布局(index.jsp)
<%@ page contentType="text/html; charset=gb2312" %>
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles"%>
<tiles:insert template="/form/layout.jsp" >
 <tiles:put name="sidebar" value="/form/sidebar.jsp"/>
 <tiles:put name="header" value="/form/header.jsp"/>
 <tiles:put name="content" value="/form/login.jsp"/>
 <tiles:put name="footer" value="/form/footer.jsp"/>
</tiles:insert>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值