JavaWeb编程基础

这篇博客详细介绍了JavaWeb编程的基础,包括OGNL表达式及其在Struts2中的应用,Struts2的标签库、数据验证机制和配置文件。此外,还讲解了Hibernate的持久化类、映射文件和数据操作,以及Spring框架的组成部分和依赖注入。内容涵盖从数据的获取、验证到框架的使用,深入浅出地阐述了JavaWeb开发的关键概念和技术。
摘要由CSDN通过智能技术生成
OGNL表达式语句:
  • OGNL(Object DGraph Navigation Language):是一种强大的表达式语言,能够自动导航对象的结构并访问和设置对象数据
  • OGNL上下文相当于一个Map容器,在Map容器中可以保存任何类型的数据(对象、数组等)
  • 基本格式,如:

    JavaBean对象User{id:int; name:String}
    
    • 访问属性的方式为:

      #user.name
      
ONGL表达式语言的特点:
  • 支持对象方法的调用
  • 支持井台方法的调用
  • 支持变量的赋值
  • 可以操作 集合数据
Struts2中的OGNL:
  • 在Struts2中,OGNL上下文作用于Struts2中的ActionContext对象
  • ActionContext中的对象:

    • 值栈(根)、application、session、request、parameters、attr
    • 获取application中的对象:

      #application.name或#application.['name']
      
    • 获取request中的对象:

      #request.name或#request.['name']
      
    • 获取session中的对象:

      #session.name或#session.['name']
      
    • 获取parameters中的对象:

      #parameters.name或#parameters.['name']
      
    • 获取attr中的对象:

      #attr.name或#attr.['name']
      
  • 在JSP页面中获取对象的属性:

    <s:property value="user.id" />
    或
    <s:property value="user[id]" />
    
    • 注意:Struts2的JSP页面需要导入标签库:

      <%@taglib prefix="s" uri="/struts-tags"%>
      
  • 静态属性的调用方法如下:

    //通过@符号来标注
    @com.michale.djh.Bean@NAME
    
    • 注意:默认情况下,struts2不允许调用静态方法,需要在struts.xml文件中手动开启

      <constant name="struts.ognl.allowStaticMethodAccess" value="true" />
      
  • 访问集合:

    • List集合:(有序集合),可以使用下标的方式访问,如:list[0]
    • Set集合:(无序集合),不能通过下标的形式访问
    • Map集合:键值对形式,通过key访问value:

      map.key 或 map.['key']
      
    • 获取所有的Key和value:

      map.keys //获取所有的Key
      map.values //获取所有的value
      
  • 集合的操作:

    collection.isEmpty//判断集合元素是否为空
    colloection.size()//获取集合的长度
    
  • 投影与选择:

    • 投影:对集合中列的操作,指将集合中的某一列数据都抽取出来形成一个集合,如:

      #list.{name} //获取一个包含多个学生对象集合的所有学生姓名
      
    • 选择:对集合中行的操作,指通过一定的条件获取集合中满足这一条件的的数据,所获取的行就是对集合中数据的选择操作,如:

      #list.{?#this.age>10}//获取所有年龄大于10的所有学生,"?"表示满足这一条件的所有对象
      
  • OGNL表达式中的操作符:
    • ?:获取满足指定条件的所有元素
    • ^:获取满足指定条件的所有元素中的第一个元素
    • $:获取满足指定条件的所有元素中的最后一个元素
Struts2的标签库
  • 数据标签:

    • property:用于获取数据值,并将数据值直接输出到页面中,其属性如下:
      • default:可选
      • escape:可选
      • escapeJavaScript:可选
      • value:可选
    • set:用于定义一个变量,可以为所定义的变量赋值及设置变量的作用域(application、request、session),set标签属性:

      • scope(String):可选,设置变量的作用域,其默认值是action
      • value(String):可选,设置变量的值
      • var(String):可选,定义变量的名称
      • set标签用法:

        <s:set var="username" value="test set tag" scope="request"></s:set>
        <s:set default="no data!" value="#request.username"/>
        
    • a:用于构建超链接,常用属性:
      • action(String):将超链接的地址指向action
      • href(String):超链接地址
      • id(String):设置HTML中的属性名称
      • method(String):如果超链接的地址指向action,method同时可以为action声明所调用的方法
      • namespace(String):可以为action声明命名空间
    • param:用于对参数赋值,属性如下:
      • name(String):设置参数名称
      • value(Object):设置参数值
    • action:用于执行 一个Action请求,可以将Action的返回结果输出到当前页面中,也可以不输出,其属性如下:
      • executeResult(String):是否使Action返回到执行结果,默认值为false
      • flush(Boolean):输出结果是否刷新,默认值为true
      • ignoreContextParams(Boolean):是否将页面请求参数传入被调用的Action,默认值为false
      • name(String):Action对象所映射的名称,也即是struts.xml中配置的名称
      • namespace(String):指定名称空间的名称
      • var(String):引用此action的名称
    • push:用于将对象或值压入到值栈中并放置到顶部,简化操作,用法如下:

      <s:push value="#request.student"></s:push>
      
    • date:用于格式化日期时间,可以对日期时间值进行指定的格式化样式格式化,包含的属性如下:
      • format(String):设置格式化日期的样式
      • name(String):日期值
      • var(String):格式化时间的名称变量,通过该变量可以对其进行引用
    • include:类似于JSP的include标签,添加了可以在目标页面中通过param标签传递请求参数的功能,用法如下:

      <%@include file="/pages/common/admin.jsp"%>
      
    • url
  • 控制标签:

    • if:

      • :可以单独使用
      • :配合使用
      • :配合使用
      • 使用方式:

        <s:if test="表达式(布尔值)">  //test属性用于设置标签的判断条件,其值为布尔类型的条件表达式,如:
        expression1
        <s:if>
        <s:elseif test="expr(Boolean)">
        expression2
        </s:elseif>
            ...
        <s:else>
        expression3
        </s:else>
        
    • iterator:可以遍历数组和集合类中的所有或部分数据(可以指定迭代数据的起始位置、步长以及终止位置来迭代集合或数组中的部分数据),其属性如下:
      • begin(Integer):指定迭代数组或集合的起始位置,默认值为0
      • end(Integer):指定迭代数组或集合的结束位置,默认值为集合或数组的长度
      • status(String):迭代过程中的状态
      • step(Integer):迭代的步长,默认值为1
      • value(String):指定迭代的集合或数组对象
      • var(String):设置迭代元素的变量,若指定此属性,那么迭代的变量将压入到值栈中
数据的验证机制:
  • 手动验证的实现: 在继承ActionSupport类的情况下,重写validate()方法,在该方法中进行验证
  • 验证文件的命名规则: 验证文件的名称必须是以下两种:(ActionName是Action对象的名称,AliasName为Action配置中的名称,也即是struts.xml配置文件中Action元素对应name属性的名称)
  • ActionName-validation.xml: 数据的验证会作用于整个Action对象中,并验证Action对象的请求业务处理方法,适用于验证处理的规则都相同的形式
  • ActionName-AliasName-validation.xml: 更加灵活。
  • 验证文件的编写风格:

    • 字段验证器编写格式: 如:验证用户名与密码(注意xml文件需要指定编码格式),其中name为需要检验的字段

      <validators>
          <field name="username">
          <field-validator type="requiresstring">
              <message>Please Input user name</message>
          </field-validator>
          </field>
          <field name="password">
              <field-validator type="requiresstring">
              <message>Please I
<>人民邮电出版社的教程哦,所以,好书,你懂的!! 第1章web应用开发简介 1 1.1何为web应用 1 1.1.1web的概念及发展 1 1.1.2web应用程序 2 1.2使用java开发web应用 3 1.2.1面向对象的编程语言 3 1.2.2丰富的框架技术 4 1.2.3xml、css的应用 4 1.2.4使用javascript与ajax提升用户体验 7 1.3多种集成开发环境 9 1.3.1集成开发环境简介 9 1.3.2web应用服务器说明 11 本章小结 14 课后练习 14 第2章 javaee运行及开发环境 15 2.1jdk的下载与安装 15 2.1.1jdk的下载与安装 15 2.1.2配置环境变量 17 >2.2tomcat的下载与安装 19 2.2.1下载并安装tomcat服务器 19 .2.2.2基本配置 22 2.2.3服务器页面介绍 23 2.3eclipse的下载与安装 24 2.3.1eclipse的下载与安装 24 2.3.2熟悉eclipse开发环境 24 2.4项目实战——第一个javaee应用:helloworld 28 2.4.1开始创建第一个javaee应用 28 2.4.2熟悉helloworld框架结构 29 本章小结 32 课后练习 32 第3章jsp和servlet 33 3.1开发第一个jsp+servlet应用 33 3.1.1创建工程 33 3.1.2编写程序 34 3.1.3部署应用 35 3.2认识jsp 36 3.2.1jsp的工作原理 37 3.2.2jsp注释方式 37 3.2.3jsp声明方式 38 3.2.4jsp表达式的应用 39 3.2.5jsp的脚本段 39 3.2.6jsp的编译指令 40 3.2.7jsp的动作指令 41 3.2.8jsp的内置对象 43 3.3认识servlet 46 3.3.1servlet的开发 46 3.3.2使用httpservlet 47 3.3.3servlet的生命周期 49 3.3.4load-on-startupservlet 50 3.4自定义标签库 51 3.5预处理用户请求:filter 53 3.6使用listener 56 3.7项目实战——用户登录 59 本章小结 62 课后练习 63 第4章sql与jdbc 64 4.1sql 64 4.1.1sql概述 64 4.1.2ddl与dml简介 64 4.1.3sql使用方法 65 4.2jdbc 67 4.2.1jdbc概述 67 4.2.2jdbc驱动程序 68 4.2.3使用jdbc读取数据 69 4.3项目实战——存储图书信息 73 本章小结 78 课后练习 79 第5章struts2框架基础 80 5.1mvc框架 80 5.1.1model1与model2 80 5.1.2mvc设计模式 81 5.1.3struts2框架的mvc架构 82 5.2struts2概览 84 5.2.1struts2的工作流程 84 5.2.2struts2的简单应用 85 5.3struts2基础 87 5.3.1action详解 88 5.3.2结果与视图 91 5.3.3struts.xml的配置 94 5.4值栈与ognl表达式 100 5.5struts2的标签库 103 5.5.1控制标签 103 5.5.2数据标签 104 5.5.3表单标签 105 5.5.4非表单ui标签 107 本章小结 108 课后练习 109 第6章struts2高级应用 110 6.1拦截器 110 6.1.1拦截器工作机制 110 6.1.2拦截器及拦截器栈的应用 111 6.1.3自定义拦截器 115 6.2类型转换器 117 6.2.1struts2内置类型转换器 117 6.2.2引用类型的转换方式 117 6.2.3特殊对象的类型转换 118 6.2.4类型转换的错误处理 121 6.3输入校验 123 6.3.1输入校验的必要性 123 6.3.2编程方式实现输入校验 125 6.3.3应用struts2输入校验框架 128 6.3.4自定义校验器 130 6.4国际化 131 6.4.1国际化实现原理 131 6.4.2准备国际化资源文件 131 6.4.3调用国际化资源文件 134 6.5上传和下载 135 6.5.1文件上传的实现原理 135 6.5.2struts2文件上传实现方式 136 6.5.3struts2文件下载实现方式 141 本章小结 143 课后练习 144 第7章 struts2中应用模板语言 145 7.1模板语言简介 145 7.2应用velocity 146 7.2.1velocity基础 146 7.2.2struts2对velocity的支持 153 7.3应用freemarker 155 7.3.1freemarker基础 155 7.3.2struts2整合freemarker 166 7.3.3使用struts2标签设计模板 170 7.4freemarker与velocity的比较 171 本章小结 171 课后练习 172 第8章hibernate框架基础 173 8.1orm简介 173 8.1.1应用orm的意义 173 8.1.2流行的orm框架 174 8.2准备hibernate运行环境 174 8.2.1下载与安装hibernate 175 8.2.2hibernate发布包介绍 175 8.3认识hibernate 176 8.3.1hibernate框架结构 176 8.3.2hibernate配置文件 177 8.3.3configuration与sessionfactory 178 8.3.4session类 179 8.3.5hibernate中的关联关系 179 8.3.6hibernate映射文件 180 8.3.7hibernate工作原理 182 8.4项目实战——新闻内容显示 183 本章小结 186 课后练习 187 第9章hibernate查询 188 9.1hibernate的数据检索策略 188 9.1.1立即检索 188 9.1.2延迟检索 189 9.1.3预先检索 190 9.1.4批量检索 191 9.2hibernate的数据查询方式 193 9.2.1hql方式 193 9.2.2qbc方式 194 9.2.3原生sql方式 195 9.3hibernate的关联查询 196 9.3.1一对一关联关系的使用 196 9.3.2一对多、多对一关联关系的使用 197 9.3.3多对多关联关系的使用 199 9.4hibernate过滤 201 9.4.1session过滤 201 9.4.2filter过滤 201 9.5项目实战——客户订单管理 202 本章小结 207 课后练习 207 第10章hibernate性能优化 208 10.1hibernate事务与并发 208 10.1.1什么是事务 208 10.1.2hibernate中的事务处理 209 10.1.3在hibernate中使用jta事务 210 10.1.4并发控制 211 10.2hibernate缓存 213 10.2.1缓存的工作原理 213 10.2.2应用一级缓存 214 10.2.3应用二级缓存 214 10.2.4应用第三方缓存 216 10.3项目实战——借还图书 217 本章小结 224 课后练习 224 第11章spring框架基础 226 11.1spring框架概述 226 11.1.1认识spring框架 226 11.1.2spring框架特点 226 11.1.3spring框架核心架构 227 11.2建立spring开发环境 228 11.2.1下载spring框架 228 11.2.2spring发布包与软件包 229 11.2.3创建spring应用环境 230 11.3bean的装配 231 11.3.1bean基本配置 232 11.3.2为bean添加属性 232 11.3.3简化配置 233 11.4理解spring的核心——ioc 234 11.4.1控制反转 234 11.4.2依赖注入的3种方式 236 11.5beanfactory与applicationcontext 238 11.5.1认识beanfactory 238 11.5.2使用applicationcontext 238 11.6项目实战——spring问候程序 239 本章小结 241 课后练习 241 第12章springaop 242 12.1aop基础 242 12.1.1aop与oop的比较 242 12.1.2aop的核心概念 243 12.1.3java动态代理与aop 244 12.1.4springaop简介 245 12.2使用spring的通知 246 12.2.1beforeadvice 246 12.2.2afterreturningadvice 248 12.2.3methodinterceptor 249 12.2.4throwadvice 250 12.3使用spring的切入点 251 12.3.1静态切入点 251 12.3.2动态切入点 253 12.4springaop的代理工厂 253 12.4.1选择合适的代理 253 12.4.2proxyfactory 254 12.4.3proxyfactorybean 254 12.5项目实战——输出日志 256 本章小结 258 课后练习 259 第13章 spring与javaee持久化数据访问 260 13.1spring对dao模式的支持 260 13.1.1统一的数据访问异常 260 13.1.2通用的数据访问模板及抽象支持类 261 13.2spring的jdbc 262 13.2.1为什么需要jdbctemplate 262 13.2.2通过jdbcdaosupport使用jdbctemplate 263 13.2.3jdbctemplate提供的常用数据操作方法 264 13.3spring中的事务处理 265 13.3.1spring事务处理概述 266 13.3.2编程式事务处理 266 13.3.3声明式事务处理 267 13.3.4标注式事务处理 268 13.4项目实战——公司人事管理 269 本章小结 276 课后练习 276 第14章spring与struts2、hibernate框架的整合基础 277 14.1spring与struts2的整合方式 277 14.1.1struts2应用的扩展方式 277 14.1.2spring插件的应用 278 14.2spring和hibernate的整合 279 14.2.1spring对hibernate的支持 279 14.2.2管理sessionfactory 279 14.2.3hibernate的dao实现 281 14.2.4使用hibernatetemplate 281 14.2.5管理hibernate事务 282 14.3项目实战——学生成绩查询系统 283 本章小结 292 课后练习 293 第15章图书馆管理系统 294 15.1系统功能解析 294 15.2系统数据库设计 295 15.2.1数据库分析 295 15.2.2数据表关联关系分析 298 15.3系统框架搭建 300 15.3.1创建工程 300 15.3.2工程目录结构 300 15.4系统代码实现 302 15.4.1数据库连接的实现 303 15.4.2工具类的实现 304 15.4.3管理员登录与退出实现 306 15.4.4系统管理实现 313 15.4.5图书管理实现 319 15.4.6读者管理实现 329 15.4.7借还管理实现 333 15.4.8前台功能实现 336 本章小结 342
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值