Struts开发

我们第一步开始配置Tomcat的连接池

首先我们将MySQL的JDBC驱动拷贝到${TOMCAT_HOME}/common/lib下面,更改MyWeb设置如下

<Context path="/MyWeb" reloadable="true" docBase="E:/DEV/MyWeb/web"

workDir="E:/DEV/MyWeb/work/org/apache/jsp" >

<!--

    设置连接池的JNDI名

-->

<Resource name="jdbc/mysql" auth="Container"

type="javax.sql.DataSource"/>

<ResourceParams name="jdbc/mysql">

<!--

   工厂类

-->

<parameter>

<name>factory</name>

<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>

</parameter>

<!--

   连接池基本设置

-->

<parameter>

<name>maxActive</name>

<value>100</value>

</parameter>

<parameter>

<name>maxIdle</name>

<value>30</value>

</parameter>

<parameter>

<name>maxWait</name>

<value>10000</value>

</parameter>

<parameter>

我们编写资源文件

password=<font color=red>密码格式错误</font>

userName=<font color=red>帐号格式错误</font>

hbm.session.error=建立Hibernate Session 错误。

no.user=找不到这样得用户。

hbm.session.query=Hibernate HQL 查询错误。

errors.header=</font color=red><ul>

errors.footer=</ul></font>

Logon=登陆

Logon.UserName=帐号

Logon.Password=密码

保存到C:/1.txt

然后运行

native2ascii -encoding GBK C:/1.txt C:/ApplicationResources_zh_CN.properties

将生成得C:/ApplicationResources_zh_CN.properties拷贝到src目录下,我们重新运行此登陆程序。

出现乱码,我们忘了将JSP页面编码设成UTF-8了,添加

contentType="text/html;charset=UTF-8",再次刷新

OK成功

当你在帐号框里面输入中文,但是没有通过,就会出现下图现象。

又出现乱码,这样的情况解决办法有3个:

1.  在每一个Action里面设置Response得编码,这种方法比较繁琐,每一个Action必须设置一次。

2.  利用Servlet2.3里面得过滤器,统一设置编码

3.  重载ActionServlet里面的Process函数。

 

1种方法很难通过XML配置来获得编码方式。

23可以通过Web.xml里面配置参数来解决

本文讲述时利用方式2,过滤器Filter

Tomcat里面的samples里面的Filter文件夹下有现成的编码过滤器。

拷贝来,在Eclipse利用重构,解决package不匹配问题。

下面为这个过滤器配置web.xml

<!--

        Filter

        -->

    <filter>

        <filter-name>Set Character Encoding</filter-name>

        <filter-class>com.yjsoft.filter.SetCharacterEncodingFilter</filter-class>

        <init-param>

            <param-name>encoding</param-name>

            <param-value>UTF-8</param-value>

        </init-param>

    </filter>

    <filter-mapping>

        <filter-name>Set Character Encoding</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

    <!--

    end

    -->

再次启动Tomcat测试,OK。

下面开始处理JSP页面出错情况

添加错误页面,内容如下:

<%@ page contentType="text/html; charset=UTF-8" %>

<%@ page isErrorPage="true" %>

……其他省略,请看源文件

当要在其他页面处理Exception时,只要在头部添加

<%@ page errorPage="error.jsp" %>

测试如下:

<%@ page language="java" contentType="text/html;charset=UTF-8"%>

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

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

<%@ page errorPage="error.jsp" %>

 <%

    int n=0;

    int n1=10/n;

 %>

请求时转向出错页面:

下面测试Action中的Exception。

 

 

现在我们开始为Action中的异常定义处理。

先配置全局Exception

<global-exceptions>

<exception key="errors.message" path="actionerror.jsp" scope=request type="java.lang.Exception" />

</global-exceptions>

修改我们的LogonAction使其抛出一个异常。这样全局配置文件就可以进行处理了

上面的验证是通过Server端来的,我们继承了ActionForm,其实我们有一种更简单的方式,那就是利用Validator组件。

使用validator组件,既可以支持客户端的验证,同时Server端也进行同样验证。同时验证方式可以重用。

我们来认识一下Struts1.1的Validator。

1.Validators
       一个Validator就是,执行一个验证规则时Validator框架调用的一个Java类。框架根据配置文件中定义的方法签名来调用这个Validaotor类。一般情况下,每个Validator类提供一个单独的验证规则,然后这些规则可以组合成更复杂的规则集。Validator框架提供了Web应用程序需要的大多数的验证规则。你可以使用这些现有的验证规则来创建自己验证配置文件。我们也可以根据需要随意的增加更多的Validator。

 

2.配置文件

Struts1.1的Validator框架,用到这样两个配置文件,一个叫validator-rules.xml,另一个叫validation.xml;其实你也可以随意的给他们命名,甚至可以把它们合并成一个XML文件。但是,你还是最好把它们分开,因为它们各有各的用途。

Validator-rules.xml文件
 validator-rules.xml文件定义应用程序可以使用的Validator。Validator-rules.xml充当模板的作用,定义所有应用程序可能要用到的Validator。

下面我们重新设计我们的LogonForm

改为

public class LogonForm extends ValidatorForm/*ActionForm*/

我们注释掉ActionForm的Validate()函数。

我们配置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>

 

下面我们修改validation.xml文件

增加

<form name="logonForm">

            <field

                property="userName"

                depends="required">

                    <arg0 key="userName" resource="false"/>

             </field>

         <field

            property="password"

            depends="required">

            <arg0 key="password" resource="false"/>

            

         </field>

        </form>

同时在资源文件中增加

errors.required={0} is required.

 

重新启动程序,那么登陆程序服务器端验证就起作用了。

下面我们来添加Client端的Javascript验证。

 

修改Logon.jsp

<%@ page language="java" contentType="text/html;charset=UTF-8"%>

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

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

<%@ page errorPage="error.jsp" %>

 

<html>

    <head>

        <title><bean:message key="Logon"/></title>

    </head>

    <body>

    <html:errors property="hbm.session.error"/>

    <html:errors property="no.user"/>

    <html:errors property="hbm.session.query"/>

        <html:form action="/jsp/logon.do" focus="userName"

         οnsubmit="return validateLogonForm(this)">

          <bean:message key="Logon.UserName"/> : <html:text property="userName"/><html:errors property="userName"/></br>

          <bean:message key="Logon.Password"/> : <html:text property="password"/><html:errors property="password"/></br>

            <html:submit>

                <bean:message key="Logon.Submit"/>

            </html:submit>

        </html:form>

        <html:javascript dynamicJavascript="true" staticJavascript="true" formName=logonForm/>

       

    <body>

</html>

 

OK

下一此按Excel计划开始贯彻前期思想。

 

 

下载Excel计划,本期源文件

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值