Struts2学习二(Struts2的常用功能)

1、Struts2常用功能

Struts2作为一个MVC应用程序的框架,能够解决web应用程序开发过程中的一些常见问题提供解决方案
1、获取表单内容,封装成对象(封装请求参数)
2、类型转换(8种基本数据类型,Date,数组,List,Map)
2、根据请求的参数转发给适当的控制器
3、校验(手动校验,xml校验)
4、国际化(i18n)
5、拦截器

2、封装请求参数

Struts2通过ModelDriven实现请求参数的封装
步骤如下

  1. 实现接口:ModelDriven
  2. 编写方法:public User getModel() { return user ; }
  3. 提供成员变量:private User user = new User();

ModelDriven 机制
Struts2提供提供使用领域的对象方式,就是ModelDriven接口
通过ModelDriven接口可以直接操作应用程序中的领域对象,允许在web层和业务层使用相同的对象。

public  Object  getModel(){ 
returnnull; 
} 

该方法返回一个用于接收用户输入数据的对象模型

这里写图片描述
示例代码
1、JavaBean类User

public class User {
    private String userName;
    private String upserPwd;

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getUpserPwd() {
        return upserPwd;
    }

    public void setUpserPwd(String upserPwd) {
        this.upserPwd = upserPwd;
    }

}

2、UserAction类

public class UserAction extends ActionSupport implements ModelDriven<User>{

    private User user =new User();

    public User getModel() {
        // TODO Auto-generated method stub
        return user;
    }
    public String add(){
        return SUCCESS;
    }

}

3、web.xml文件中添加filter

<filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

4、form.jsp和success.jsp

<body>
    <form action="${pageContext.request.contextPath}/userAction" method="post">
        用户名<input type="text" name="userName"> <br/>
        密码<input type="text"name="upserPwd"><br/>
         <input type="submit" value="提交">
    </form>
</body>

success.jsp

<body>
    action success. <br>
  </body>

5、struts.xml文件配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <constant name="struts.devMode" value="true"></constant>
    <package name="demo" namespace="/" extends="struts-default">
        <action name="userAction" class="com.example.demo.UserAction"
    method="add">
            <result>/a/success.jsp</result>
        </action>
    </package>


</struts>

3、数据校验

在web开发中数据校验可以是JavaScript,也可以是struts校验。但是JavaScript不安全,面的是在浏览器端进行的校验,服务器端也必须对数据进行校验

struts校验方式
1、xml校验

2、注解校验

这里写图片描述
示例代码
流程
1、Customer类

public class Customer {
    private String username;
    private String password;
    private String repassword;
    private String email;
    private int age;
    private Date birthday;
    private String gender;
    private String cardid;

    public String getName() {
        return username;
    }

    public void setName(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getRepassword() {
        return repassword;
    }

    public void setRepassword(String repassword) {
        this.repassword = repassword;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getCardid() {
        return cardid;
    }

    public void setCardid(String cardid) {
        this.cardid = cardid;
    }

    @Override
    public String toString() {
        return "Customer [name=" + username + ", password=" + password
                + ", repassword=" + repassword + ", email=" + email + ", age="
                + age + ", birthday=" + birthday + ", gender=" + gender
                + ", cardid=" + cardid + "]";
    }

}

2、CustomerAction

public class CustomerAction extends ActionSupport implements
        ModelDriven<Customer> {

    private Customer customer = new Customer();


    public Customer getModel() {
        // TODO Auto-generated method stub
        return customer;
    }

    public String register(){
        System.out.println("customer----"+customer);
        return NONE;

    }
}

3、struts.xml文件配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <constant name="struts.devMode" value="true"></constant>
    <package name="demo" namespace="/" extends="struts-default">
        <action name="customerAction_*" class="com.example.demo2.CustomerAction"
            method="{1}">
            <result name="input">/b/form.jsp</result>
        </action>
    </package>
</struts>

4、form.jsp表单

<body>

    <s:fielderror></s:fielderror>
    <h2>注册</h2>

    <form action="${pageContext.request.contextPath}/customerAction_register"
        method="post">             
        用户名<input type="text" name="username" value="1234" > <br /> 
        密码<input type="text" name="password" ><br /> 
        确认密码<input type="text"name="repassword"><br /> 
        邮箱<input type="text" name="email"><br /> 
        年龄<input type="text" name="age"><br /> 
        生日 <input type="text" name="birthday"><br /> 
        性别<input type="text"name="gender"><br /> 
        身份证<input type="text" name="cardid"><br />
        <input type="submit" value="提交">
    </form>
</body>
</html>

5、CustomerAction-customerAction_register-validation.xml文件配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
        "-//Apache Struts//XWork Validator 1.0.3//EN"
        "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
    <!-- #1 用户名 -->
    <field name="username">
        <field-validator type="requiredstring">
            <message>用户名必填</message>
        </field-validator>
    </field>

    <!-- #2 密码-->
    <field name="password">
        <field-validator type="requiredstring">
            <message>密码必填</message>
        </field-validator>
        <field-validator type="stringlength">
            <param name="minLength">2</param>
            <param name="maxLength">12</param>
            <message>密码必须在${minLength}-${maxLength}字符之间</message>
        </field-validator>
    </field>

    <!-- #3 确认密码 -->
    <field name="repassword">
        <field-validator type="fieldexpression">
            <param name="expression"><![CDATA[password == repassword]]></param> 
            <message>密码 和 确认密码 不一致</message>
        </field-validator>
    </field>

    <!-- #4 邮箱 -->
    <field name="email">
        <field-validator type="email">
            <message>电子邮箱格式不正确。</message>
        </field-validator>
    </field>
    <!-- #5 年龄 -->
    <field name="age">
        <field-validator type="int">
            <param name="min">0</param>
            <param name="max">120</param>
            <message>年龄必须是${min}-${max}之间一个数</message>
        </field-validator>
    </field>
    <!-- #5 生日 -->
    <field name="birthday">
        <field-validator type="date">
            <param name="min">1980-01-01</param>
            <param name="max">2000-12-31</param>
            <message>生日必须是${min}-${max}之间</message>
        </field-validator>
    </field>

    <!-- #6 性别 -->
    <field name="gender">
        <!-- 如果没有选择,服务器获得性别为null -->
        <field-validator type="required">
            <message>性别必须选择</message>
        </field-validator>
    </field>
    <!-- #7 身份证 -->
    <field name="cardid">
        <field-validator type="regex">
            <param name="regexExpression">[\d]{6}-[\d]{8}-[\d]{4}</param>
            <message>身份证必须是一下格式</message>
        </field-validator>
    </field>

</validators>
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值