Struts2学习二(Struts2的常用功能)
来源:互联网 发布:java输出1到100的素数 编辑:程序博客网 时间:2024/06/06 05:24
1、Struts2常用功能
Struts2作为一个MVC应用程序的框架,能够解决web应用程序开发过程中的一些常见问题提供解决方案
1、获取表单内容,封装成对象(封装请求参数)
2、类型转换(8种基本数据类型,Date,数组,List,Map)
2、根据请求的参数转发给适当的控制器
3、校验(手动校验,xml校验)
4、国际化(i18n)
5、拦截器
2、封装请求参数
Struts2通过ModelDriven实现请求参数的封装
步骤如下
- 实现接口:ModelDriven
- 编写方法:public User getModel() { return user ; }
- 提供成员变量: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 0
- Struts2学习二(Struts2的常用功能)
- struts2学习(二)
- struts2的常用标签(二)
- Struts2学习(二)---一个struts2的登陆例子
- struts2学习---struts2常用标签(上)
- struts2学习笔记(二) 初识Struts2
- struts2学习笔记(二) 初识Struts2
- 关于Struts2框架的学习(二)
- struts2-常用功能
- struts2的学习笔记二
- struts2的深入学习(二)
- Struts2学习笔记(二)
- struts2学习笔记(二)
- Struts2学习笔记(二)
- Struts2学习笔记(二)
- struts2学习笔记(二)
- Struts2学习笔记(二)
- Struts2学习笔记(二)
- Android程序员必备-数据结构与算法之冒泡排序
- JavaScript对象--学习总结3
- ADF(UI)--<af:table>在使用分页是如何固定高度
- [LeetCode-258]Add Digits(java)
- html5中旋转块级元素的简单小方法
- Struts2学习二(Struts2的常用功能)
- Apizza 最好用的API管理,调试,文档工具
- Oracle安装时先决条件检查失败的解决方案
- [知识点滴]HTML页面元素显示&隐藏方式及区别
- Android学习笔记之封装数据库工具类
- C++ vector用法(详解!!函数,实现)
- Web应用架构的新趋势---前端和后端分离的一点想法
- Codeforces-663A-Rebus
- openflow引擎源码分析(数据结构)