当前位置: 首页 > news >正文

中国临沂网站优化网络规划设计师通过率是多少

中国临沂网站优化,网络规划设计师通过率是多少,可以显示文章列表的wordpress主题,微信网站开发完全教程上一篇:开发者导航:Struts2学习笔记第2天-CSDN博客 1 多个struts配置文件 多个struts配置文件的用途是为了模块开发和减少开发中的冲突 减少开发中的冲突 模块开发 只有一个struts.xml的配置 多个struts的文件开发 struts.xml struts-order.xml: 2 …

上一篇:开发者导航:Struts2学习笔记第2天-CSDN博客

1 多个struts配置文件

多个struts配置文件的用途是为了模块开发和减少开发中的冲突

减少开发中的冲突

模块开发

只有一个struts.xml的配置

多个struts的文件开发

struts.xml

struts-order.xml:

2 Action接收请求参数的方式

我们以一个简单的登录案例来讲解

2.1 通过以前的Servlet来获取

login.jsp

UserAction

Struts.xml

2.2 通过Action的属性的set方法注入

struts会通过表单字段的名称,调用set方法,比如username字段会调用setUsername

UserAction

2.3 通过Action的属性的set模型的形式注入

User.java模型:提供属性的get/set方法


 
UserAction.java

把参数封装到一个User模型中,然后Action提供模型的get/set方法


 
Index.jsp

补充:讲解下面set/get方法打印顺序的原因

先获取user对象,如果没有,创建一User对象注入进去

2.4通Action模型驱动封装参数

index.jsp

UserAction.java

2.5 参数注入的原理

  • 参数会自动注入是因为有两个拦截器在工作
  • 查看struts-default.xml源码可以看到下面两个拦截器
  • <interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>
  • <interceptor name="modelDriven" class="com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor"/>

修改包下的拦截器

ModelDrivenInterceptor源码

2.6 静态参数注入【少用】

  • struts学可以通过在action中静态注入参数,然后在Action提交属性注入
  • 这种是静态流入,参数写死

3 用户注册案例

表现层web

第一步:在mysql中添加一个struts2_day3数据库,把db.sql的表创建下

注:数据库需要utf-8编码的,才可以存储中文

第二步:将资料中db文件夹的jar导入到项目工程中

这里的数据源使用DBCP:DataBase Connection Pool 是apache公司实现的一个开源的数据源。

第三步:将资料中db文件夹的dbcpconfig.properties导入src项目下

第四步:将DBCPUtil.java写好的导入在项目中

第五步:写webcontent中写个注册页面


 
第六步:写个UserAction,使用模型驱动来接收参数

User.java

UserAction.java

第七步:配置struts.xml

持久层dao和Service层

UserDao实现类

UserService实现类

UserAction 的register方法修改

struts自定义参数类型转换

前面的多个爱好请求参数,struts框架会自动进行字符串的拼接,如拼接成【泡妞, 写代码, 买房子】,是以逗号+空格类型来拼接的

提交生日时,是以2017-08-09的格式提交的,struts也会把字符串转成Date类型,这些都是struts做的类型转换

但是如果提交的08/09/2017,struts就会报错【错误的日期表达】

struts有很多类型转换器

struts的字符串类型转换是由com.opensymphony.xwork2.conversion.impl.StringConverter类来完成的

日期类型转换是由com.opensymphony.xwork2.conversion.impl.DateConverter来完成 

源码分析得出,如果要自己写一个类型转换

  • 可以实现DefaultTypeConverter抽象类
  • 我们一般也可以用它的子类StrutsTypeConverter来实现

自定义日期类型转换步骤

第一步:写一个类继承StrutsTypeConverter,并实现抽象方法

第二步:实现两个抽象方法的逻辑

第三步:配置局部类型转换器

在模型pojo的包下配置【模型名字-conversion.properties】的一个文件,内容如下

第四步:测试自定义日期是否生效

第五步:配置全部类型转换器

  • 在类的根路径配置一个xwork-conversion.properties文件
  • key为数据类型(全类名)
  • value为类型转换器的全类名

struts的错误回显

前提:将前面用户注册案例的时间转化时,抛出运行时异常

注册时,将日期写错格式,会得到下面的一个结果,result input表示需要一个回显页面,也就是发生异常时的显示页面

在struts.xmp中配置回显页面

在register.jsp中添加struts的标签

回显效果

struts的form表单标签

struts的from标签提供了和原始html表单几乎一至的属性

属性

  • Action    请求地址。直接写动作名称,不用写contextPath
  • method    请求方式,默认的是post请求,可以不用写
  • enctype    静音编码的MIME类型

案例:将前面的用户注册案例改成struts的表单标签来显示

register2.jsp代码

strtus的错误处理和中文显示

  • struts标签如果有字段错误,会回显信息

设置回显信息为红色

添加个s:head标签即可

效果

设置回显信息中文化

在模型的包中,添加一个模型+properties,配置key value

key格式为下面的invalid.fieldvalue.字段名

效果 

struts的表单数据验证方式

1 服务端Action验证

有两种方法,如果图

效果

2 xml声明式验证

全局声明方式
  • 在action包中声明UserAction-validation.xml文件
  • 这种方式配置是全局配置,所有action的方法都会拦截验证
  • 如果其它方法不想验证,可配置@SkipValidation注解
  • dtd约束可以在xwork-core的jar包中找

struts默认有很多种验证器类型,声明在default.xml中

注意default.xml的位置

演示密码不能大于6的配置

局部声明方式
  • 在action包中声明UserAction-register-validation.xml文件
    • 声明方式 【Action类名-方法名-validation.xml】
  • xml内容与上面的一样

3 验证器案例综合

Add.Jsp页面


student模型

public class Student {private String username;//不能为空,去空字符串private int age;//18~100private String email;//正确邮箱格式private String password;//3~8private String repassword;//与密码一至private int score;//必须是自然数private String url;//必须是一个路径private String gender;//性别,只有男和女

Action
 
Struts.xml
 
StudentAction-add-validation.xml

<validators><!--1.  private String username;//不能为空,去空字符串requiredstring 比 required 好一点,会自动去除空格--><validator type="requiredstring"><param name="fieldName">username</param><message>用户名不能为空</message></validator><!--2.private int age;//18~100 1.表单的类型,会根据模型的属性类型去校验--><validator type="int"><param name="fieldName">age</param><param name="min">18</param><param name="max">100</param><message>年龄必须在18~100</message></validator><!-- 3.private String email;//正确邮箱格式--><validator type="requiredstring"><param name="fieldName">email</param><message>邮箱不能为空</message></validator><validator type="email"><param name="fieldName">email</param><message>邮箱格式不正确</message></validator><!--4. private String password;//3~8 --><validator type="requiredstring"><param name="fieldName">password</param><message>密码不能为空</message></validator><validator type="stringlength"><param name="fieldName">password</param><param name="minLength">3</param><param name="maxLength">8</param><message>密码长度为3~8</message></validator><!-- 5.private String repassword;//与密码一至 --><validator type="expression"><param name="expression"><![CDATA[ password == repassword]]></param><message>密码不一至</message></validator><!-- 6.private int score;//必须是自然数regex :正则--><!-- <validator type="regex"><param name="fieldName">score</param><param name="regexExpression">\d+</param><message>分数必须要数字</message></validator> --><!--     private String url;//必须是一个路径 http:// --><validator type="url"><param name="fieldName">url</param><message>URL格式不合法,以 http://开头</message></validator><!--     private String gender;//性别必填,只有男和女 --><validator type="required"><param name="fieldName">gender</param><message>性别必选</message></validator>
</validators>


 

http://www.yayakq.cn/news/187157/

相关文章:

  • 怎么制作网站教程步骤视频系部网站建设管理方案
  • 做网站的p什么2003网站首页怎么做营业执照链接
  • vs2010网站开发教程网站优化策略
  • 做网站需要宽带在线做网站索引
  • 网推赚钱项目孝感网站seo
  • 前端做企业网站企业信息公示网查询官网
  • 四站合一网站建设价格口碑营销案例简短
  • 东莞seo网站优化排名网站搭建功能需求
  • 企业网站 实名认证软件商城免费下载 app
  • 网站里面的超链接怎么做免费发帖推广平台
  • 罗湖中心区做网站麻城做网站
  • 广州网站开发多少钱西部数码做的网站打不开
  • 网站的百度快照如何做大连网站程序开发
  • 菏泽网站网站建设安康做网站的公司电话
  • 广州网站备案做网站找合作伙伴
  • 有没有介绍做私家导游的网站产品宣传类网站设计
  • 南昌网站建设利润三合一网站管理系统
  • 网站建设同步视频灯箱广告制作公司
  • DW怎么做电商网站新闻式软文范例
  • 中国房地产网站wordpress推荐php版本
  • 如何开发一个app建设一个网站网站访问次数受限
  • 网站设计公司圣辉友联网站建设后如何修改
  • 西安网站公司哪家好设计网站排名
  • 海阳市住房和城乡建设局官方网站发布软文的平台
  • wordpress个人网站模板优化设计英语
  • 平台网站建设哪家有网站开发与维护是什么
  • dns上国外网站网站建设内容与实现功能
  • 黄山购物网站建设成都网站运营公司
  • 山西设计网站建设深圳网络推广顾问
  • 南宁网站建设智能优化wordpress 安全 插件下载失败