Java Web 应用开发

钱荣华等

目录

  • 1 项目1 了解Java Web应用开发
    • 1.1 任务1 创建第一个Web网站
      • 1.1.1 前导知识
        • 1.1.1.1 网络程序体系结构
        • 1.1.1.2 web简介
        • 1.1.1.3 Web应用技术
        • 1.1.1.4 参考资源
      • 1.1.2 任务实现
        • 1.1.2.1 开发环境配置
        • 1.1.2.2 环境配置诊断
        • 1.1.2.3 创建动态网站
    • 1.2 单元测验1
    • 1.3 阅读材料
  • 2 项目2 JS技术
    • 2.1 任务1 验证用户注册页面
    • 2.2 前导知识
      • 2.2.1 JavaScript概述
        • 2.2.1.1 PPT
        • 2.2.1.2 视频
        • 2.2.1.3 随堂测验
      • 2.2.2 Java script 语法
        • 2.2.2.1 PPT
        • 2.2.2.2 视频
        • 2.2.2.3 随堂测验
      • 2.2.3 JavaScript常用事件和对象
        • 2.2.3.1 PPT
        • 2.2.3.2 视频
        • 2.2.3.3 随堂测验
      • 2.2.4 jQuery框架
        • 2.2.4.1 PPT
        • 2.2.4.2 视频
        • 2.2.4.3 随堂测验
    • 2.3 任务实现
      • 2.3.1 视频
    • 2.4 单元测验2
    • 2.5 阅读材料
  • 3 项目3 Servlet服务器端编程基础
    • 3.1 教学目标
    • 3.2 任务1 Servlet问候语网站
      • 3.2.1 前导知识:XML基础
        • 3.2.1.1 PPT
        • 3.2.1.2 视频
        • 3.2.1.3 随堂测验
        • 3.2.1.4 XML基础--参考资料
      • 3.2.2 前导知识 :Servlet入门
        • 3.2.2.1 PPT
        • 3.2.2.2 视频
        • 3.2.2.3 随堂测验
      • 3.2.3 任务1实现
        • 3.2.3.1 PPT
        • 3.2.3.2 视频
    • 3.3 任务2 每日一词小站
      • 3.3.1 前导知识
        • 3.3.1.1 HttpServlet类
        • 3.3.1.2 Servlet虚拟路径映射
          • 3.3.1.2.1 PPT
          • 3.3.1.2.2 视频
          • 3.3.1.2.3 随堂测验
      • 3.3.2 任务2实现
        • 3.3.2.1 每日一词小站
    • 3.4 单元测验3
    • 3.5 任务3 统计网站访问次数
      • 3.5.1 前导知识
        • 3.5.1.1 PPT
        • 3.5.1.2 ServletContfig接口视频
        • 3.5.1.3 ServletContext接口视频
        • 3.5.1.4 随堂测验
      • 3.5.2 任务3实现
    • 3.6 单元测验4
    • 3.7 阅读材料
  • 4 项目4 请求和响应
    • 4.1 任务1 实现用户登录功能
      • 4.1.1 前导知识1:HTTP协议
        • 4.1.1.1 PPT
        • 4.1.1.2 视频
        • 4.1.1.3 随堂测验
      • 4.1.2 前导知识2:HttpServletResponse
        • 4.1.2.1 HttpServletResponse接口
        • 4.1.2.2 随堂测验
        • 4.1.2.3 HttpServletResponse接口应用
        • 4.1.2.4 随堂测验
      • 4.1.3 任务1实现
    • 4.2 任务2 学生选课信息
      • 4.2.1 前导知识:HttpServletRequest接口
      • 4.2.2 随堂测验
      • 4.2.3 前导知识:HttpServletRequest应用
      • 4.2.4 随堂测验
      • 4.2.5 任务2实现
    • 4.3 任务3 实现学生选课系统
      • 4.3.1 前导知识
        • 4.3.1.1 RequestDispatcher对象的应用
          • 4.3.1.1.1 PPT
          • 4.3.1.1.2 视频
      • 4.3.2 任务3实现
      • 4.3.3 随堂测验
    • 4.4 单元测验6
    • 4.5 阅读材料
  • 5 项目5 JSP技术
    • 5.1 任务1 编写第一个JSP文件
      • 5.1.1 前导知识:JSP概述
      • 5.1.2 任务实现
    • 5.2 任务2 JSP页面点击次数统计
      • 5.2.1 前导知识:JSP基本语法
      • 5.2.2 任务实现
    • 5.3 单元测验7
    • 5.4 任务3 猜数字游戏
      • 5.4.1 前导知识:JSP指令
      • 5.4.2 前导知识:JSP隐式对象
      • 5.4.3 前导知识:JSP动作元素
      • 5.4.4 任务实现
    • 5.5 单元测验8
    • 5.6 阅读材料
  • 6 项目6 JavaBean技术
    • 6.1 任务1 使用JavaBean在JSP中显示用户注册信息
      • 6.1.1 前导知识
        • 6.1.1.1 JavaBean技术
        • 6.1.1.2 JavaBean应用
        • 6.1.1.3 在JSP页面中访问JavaBean的属性
      • 6.1.2 任务1实现
      • 6.1.3 JavaBean随堂测验
    • 6.2 任务2使用不同模式开发日志显示页面
      • 6.2.1 前导知识:开发模式
        • 6.2.1.1 PPT
        • 6.2.1.2 视频
      • 6.2.2 任务2实现:JSP Model1
      • 6.2.3 任务2实现:JSP Model2
      • 6.2.4 随堂测验
    • 6.3 单元测验9
  • 7 项目7 会话及会话技术
    • 7.1 任务1 在客户端页面用Cookie存储用户登录信息
      • 7.1.1 前导知识
        • 7.1.1.1 会话概述
        • 7.1.1.2 Cookie对象
        • 7.1.1.3 Cookie应用
      • 7.1.2 任务实现
      • 7.1.3 单元测验9
    • 7.2 任务2 电子商务网站购物车模块实现
      • 7.2.1 前导知识:Session对象
      • 7.2.2 任务实现:购物车
    • 7.3 任务3 用户自动登录
    • 7.4 单元测验10
    • 7.5 阅读材料
  • 8 项目8 学习EL表达式和JSTL
    • 8.1 任务1 基于EL表达式的信息输出
      • 8.1.1 前导知识 :EL概述
      • 8.1.2 前导知识:EL语法规则
      • 8.1.3 前导知识:EL隐式对象
      • 8.1.4 任务1 实现
    • 8.2 任务2  基于JSTL的信息输出
      • 8.2.1 前导知识 :JSTL
        • 8.2.1.1 任务2实现
    • 8.3 单元测验11
  • 9 项目9 Servlet服务器高级编程
    • 9.1 任务1 实现字符编码过滤器
      • 9.1.1 前导知识:过滤器概述
      • 9.1.2 过滤器应用
      • 9.1.3 任务1 实现
    • 9.2 任务2 利用filter实现自动登录
    • 9.3 单元测验12
    • 9.4 任务3 在线用户的显示和用户数统计
      • 9.4.1 监听器概述
      • 9.4.2 监听器应用
      • 9.4.3 任务3 实现
    • 9.5 单元测验13
  • 10 项目10 JDBC数据库编程
    • 10.1 任务1 创建数据库连接
      • 10.1.1 JDBC概述
      • 10.1.2 JDBC常用API
      • 10.1.3 任务1实现
    • 10.2 单元测验14
    • 10.3 任务2 使用JDBC完成数据的增删改查
      • 10.3.1 前导知识
      • 10.3.2 任务2实现 使用JDBC完成数据的增删改查
    • 10.4 单元测验15
  • 11 项目11 数据库连接池
    • 11.1 任务1 使用JNDI数据源访问数据库
      • 11.1.1 前导知识
      • 11.1.2 任务1实现
    • 11.2 任务2 DBCP工具类获取数据库连接对象
      • 11.2.1 前导知识
      • 11.2.2 任务2 实现
    • 11.3 任务3 应用C3P0工具类获取数据库连接对象
      • 11.3.1 前导知识
      • 11.3.2 任务3实现
    • 11.4 单元测验16
    • 11.5 阅读材料
  • 12 项目12  Ajax技术应用
    • 12.1 任务1 一键查询
      • 12.1.1 前导知识
      • 12.1.2 任务1实现
    • 12.2 任务2 检验注册用户名是否可用
      • 12.2.1 前导知识
      • 12.2.2 任务2实现
    • 12.3 单元测验17
  • 13 附录1:电子教案
    • 13.1 电子教案
  • 14 附录2:课程标准
    • 14.1 Java Web应用开发课程标准
  • 15 网页开发基础
    • 15.1 Html
    • 15.2 CSS
    • 15.3 图书商城首页设计
    • 15.4 单元测验2
    • 15.5 阅读材料
阅读材料

包云岗:把芯片设计的门槛降下来

来源: 科技日报 张盖伦


包云岗,中国科学院计算技术研究所研究员、所长助理,中国科学院大学教授,中国开放指令生态(RISC-V)联盟秘书长。从事计算机体系结构和开源芯片方向前沿研究,主持研制多款达到国际先进水平的原型系统,相关技术在华为、阿里等国内外企业应用。入选中国计算机大会、ARM全球研究峰会特邀大会报告,获“CCF-Intel青年学者”奖、阿里巴巴最佳合作项目奖、“CCF-IEEE CS”青年科学家奖、共青团中央“全国向上向善好青年”荣誉称号等。

“我们想把开源芯片的生态建起来。这件事总要有人去做,我希望能出一份力。”围绕它,这位80后学者内心有一张宏伟蓝图。未来,他想一点点将蓝图填满。

4月中旬,一颗特殊的开源处理器芯片将流片回来。

它由中国科学院大学(以下简称国科大)五位本科毕业生参与设计。如果流片成功,它可运行Linux操作系统,支持基本的输入输出设备。

包云岗挂念着这颗芯片。因为,它是国科大“一生一芯”计划产出的首颗芯片。让芯片设计不再令人望而生畏,是计划的初衷。

包云岗是中国科学院计算技术研究所研究员、所长助理、先进计算机系统研究中心主任。从入所起,他一直研究的就是计算机体系结构。现在,他将更多精力投入到开放指令集RISC-V和开源处理器芯片上。

围绕它,这位80后学者内心有一张宏伟蓝图。未来,他想一点点将蓝图填满。人才培养,就是蓝图中的重要版块。

“我们想把开源芯片的生态建起来。这件事总要有人去做,我希望能出一份力。”虽然谈的是宏伟愿景,但包云岗的语气还是一如既往的平静。他在论坛和会议上发言,也常是这个风格,和风细雨,慢条斯理,用柔和将锋利包裹。

一不小心就站在了风口上

包云岗清楚地知道,我国前端芯片架构设计人才缺口大。芯片现在越来越热,但人才培养没有跟上,国内甚至出现芯片公司互挖墙脚的尴尬现象。

“我国优秀人才储备严重不足。”包云岗对2008年到2017年计算机体系结构国际顶级会议论文第一作者做过分析,只有4%来自中国的高校和科研院所。

说到做芯片,学生的第一反应就是——难,他们本能地想绕开这根硬骨头。怎样降低芯片开发的门槛,包云岗找到的方法,是开源。

开放指令集RISC-V与芯片敏捷开发语言Chisel,能使开发效率数量级提升。而RISC-V,正是包云岗近几年的研究重心。这一指令集可以自由地用于任何目的,允许任何人设计、制造和销售RISC-V芯片和软件。

2018年时,包云岗就隐约意识到,RISC-V对人才培养或许有帮助。2019年5月,华为被美国商务部列入“实体名单”,人才危局必须尽快找到出路。于是,包云岗迅速将模糊的想法细化,并在自己任教的国科大落地实施:给相关专业学生新增一门专业选修的贯通性实践课程,让大四和研究生一年级学生学习并实践芯片敏捷设计方法,参与芯片设计实现,通过大学流片计划完成芯片制造。让学生能带着他们自己设计的芯片实物毕业,这会是最“硬核”的纪念。

也不知道能得到多少资源,但它有用,就去做。之后,这一计划得到了学校的重视。“它将会掀起本科教学改革的新篇章。”校领导这样评价。

确实,这样的课程,是教育部倡导的具有高阶性、创新性和挑战度的“金课”。包云岗的计划,一不小心就站在了风口上。“我的初衷就是解决问题。我发现,真正能解决问题的方案是能得到认可的。”

“也许能像开发APP一样开发芯片”

在“一生一芯”计划下诞生的凝结着学生心血的芯片,以后还会不停迭代。“从教学方案设计到实验的平台环境搭建,我们已经探了回路。把路走通之后,就可以把这一模式复制到其他高校。”包云岗知道,过程不会太容易,“要多折腾几下”,但总能看到效果。

其实,很多事情回头看,都仿佛是“冥冥之中自有安排”。

提出“一生一芯”是受RISC-V启发,而认准RISC-V,又是因为包云岗此前进行的项目。

2016年前后,包云岗有了创业的想法。他想把自己2012年从美国普林斯顿大学博士后结束回到国内就开始研究的一项技术产业化。为此,他也做了许多功课。“我当时觉得,科研要产生影响力,无非是三条路径:培养学生,把技术应用到学界,或者把技术应用到业界。”为了验证自己的那项技术,包云岗实际体验了一把RISC-V,然后,新世界的大门打开了。

“用开源模式做芯片,可以培养学生,也可以将成果输出到学界和业界。”太美妙了,开源芯片为包云岗奉上的是“三合一”大礼包。

他意识到,开源,真的能改变整个芯片产业的生态和格局。借助开源工具链和开源IP,“也许能像开发APP一样开发芯片”。

后来,包云岗写了一些介绍性文章,得到了包括政府部门在内的多方关注。当确信自己抓住的是大趋势后,包云岗将自己研究的主阵地转向了开源芯片。

“芯片设计的门槛太高,它很容易就被几家企业垄断。如果大家都能做,大家都有机会,这是不是解决我国芯片问题的新思路?”正面战场对抗艰难,做开源芯片就相当于培养了一队轻骑兵。换道,有没有可能超车?

包云岗好像总能稳稳踏在一个对的点上。后来,中兴遭到美国禁运,华为被列入所谓“实体名单”。芯片,不再是冷门话题。它身上承载着的,甚至还有公众的期待。

2018年,中国开放指令(RISC–V)生态联盟成立;今年1月,首个RISC-V产学研基地成立,落户武汉。

国内很多地方对未来信息技术的发展都达成了一个共识——万物互联是趋势,芯片也会出现在越来越多的地方。“以前说互联网+,未来可能是‘芯片+’。”一个个新的产业正在孕育中,围绕RISC-V,似乎有无限可能。包云岗感慨,把自己该做的事情做好后,就仿佛触发了某种连锁反应,一系列的后续自然而然地就发生了。

心有定力,才能“佛系”

2019年年初,常“以我手写我心”的包云岗写过一篇总结,截取了24条朋友圈,回顾他的2018。

如果给2019年也写篇总结,有哪些瞬间值得铭记?

 

接到记者这个问题后,包云岗特意去翻了自己的朋友圈。

“2月20日,我的学生拿到了耶鲁的通知书。这条朋友圈有345个赞;7月26日,国科大的本科生毕业;9月24日,我带的本科生拿到了北京市本科优秀毕业生……”他一条条念。这是跟学生相关的。

还有跟荣誉相关的。2019年,包云岗拿了两个有分量的奖,一个是共青团中央的“全国向上向善好青年”一个是“CCF-IEEECS青年科学家奖”,后者得到了700个赞,是他最“热”的一条朋友圈。

其实,他一直认为荣誉不该是学者追求的目标。奖励是来自外界的认可,但一般来说,认可应该是自内向外地溢出:先有自我认可,再有小同行认可,接着是大同行认可,然后是社会认可。

荣誉,是对做对了事情的附加奖励。包云岗觉得,自己一直都不缺“自我认可”。“我从小就很能自己拿主意,上什么大学都是我自己选的。我想清楚了,就往前走,好像很少有纠结痛苦的情绪。”

一路走来做出的很多选择,都和包云岗一贯做事的方式有关系:选定一个大方向,只要在大方向里面,就干一行爱一行。

小学时,包云岗就意识到自己喜欢做研究,他想过做核物理,也想过搞太空宇航;初中接触到计算机后,包云岗就将目标锁定在它上面了。读了研究生,包云岗踏进此前陌生的计算机体系结构领域,干了一段时间后,他觉得这个领域也挺有意思,那就接着干。

具体的研究方向会变化,但只要决定了,包云岗就足够坚定。

他看好的开源芯片,也有人反对,也遭到过非议。有人评价包云岗“佛系”,就算外面纷扰喧嚣,也总看起来云淡风轻。“其实,如果你内心有明确的追求,那你就可以忽略掉很多外界的声音。”有价值的批评,他接受,提醒自己还有地方需要完善;无中生有的指责,他忽略。

毕竟,他还要争分夺秒,继续赶路。