应用开发与框架(JavaWeb学习 第三部分)

第一章  EL和JSTL (可以pass)

JSP表达式语言(EL)使您能够轻松访问存储在JavaBeans组件中的应用程序数据。 JSP EL允许您创建算术和逻辑表达式。 在JSP EL表达式中,您可以使用整数,浮点数,字符串,内置常量true和false表示布尔值以及null。

例如,当您在JSP标记中指定属性值时,通常只需使用字符串。

例如 <jsp:setProperty name = \"box\" property = \"perimeter\" value = \"100\"/>   

JSP EL允许您为这些属性值中的任何一个指定表达式。 JSP EL的简单语法如下

$ {expr} 这里expr指定了表达式本身。 JSP EL中最常用的运算符是`.`和`[]`。 这两个运算符允许您访问Java Beans和内置JSP对象的各种属性。 例如,上面的语法`<jsp:setProperty>`标记可以用表达式写成   <jsp:setProperty name = \"box\" property = \"perimeter\" value = \"$ {2*box.width+2*box.height}\"/> 当JSP编译器在属性中看到$ {}形式时,它会生成代码来计算表达式并替换表达式的值。

JSTL是JSP标准标签库。EL实际上是JSTL为方便存取数据所定义的语言。(EL为JSTL服务)

为什么介绍EL和JSTL?

因为设计JSP页面时,过多的java源代码不利于项目开发。而通过servlet或者JavaBean也只能消除一部分Java代码。于是JSTL标准标签库应运而生。
 

EL基本语法结构:

${ Expression }

基本运算符: .  和  [ ]  

这里我们只介绍:EL的数据访问。

1.作用域:

${sessionScope.sessionMsg}     //用的比较多  

${requestScope.requestMsg}       

${applicationScope.applicationMsg}

${pageScope.pageMsg}

第一种相当于:

session.setAttribute("sessionMsg",集合或字符串);

然后使用第一种,就相当于把数据取出来。   //可以节省Java代码量

2.访问JavaBean

基本语法格式:${bena.property}

它的用法和前面的介绍差不多。

例如:${student.stuno}                 //获取student对象的 Student类的 属性stuno。

${sessionScope.student.stuno}    //获取存放在购物车,名称叫做student ,属性是购物车名称对应存放的student对象的stuno属性值。

(这个EL用法 不多介绍,用的比较少,只是用作工作的话,基本上现在都需要会一点Java,不看EL用法也可以。这里只做稍微了解)

第二章  AJAX入门

AJAX(异步JavaScript 和XML技术),它通过JavaScript技术融合以下技术。(包含!)

AJAX是Asynchronous JavaScript和XML的首字母缩写。 它是一组相互关联的技术,如JavaScript,DOM,XML,HTML / XHTML,CSS,XMLHttpRequest等。 AJAX允许您在不重新加载网页的情况下异步发送和接收数据,从而提高用户体验和更好的性能。

AJAX允许网页通过在后台与Web服务器交换数据来异步更新。 这意味着可以更新网页的部分内容,而无需重新加载整个页面。
 

它包含五个部分:

1.异步数据获取技术:XMLHttpRequest  

2.基于标准的表示技术:HTML / XHTML

3.动态显示和交互技术:DOM  (Document Object Model 文档对象模型)

4.数据互换和操作技术:使用XML 与 XSLT。

5.JavaScript:将前面四个部分融合。

AJAX存在一些缺点:

1.对浏览器具有一定限制,对于不兼容的浏览器,可能无法使用

2.AJAX没有刷新页面,浏览器上的后退按钮是失效的。因此客户无法回退到以前的操作。

(同样,AJAX这个章节,也暂时跳过,但这个知识点值得学习,后续有可能会学。异步模式这个用的比较多。)建议回到JavaWeb学习第一步,去回顾一下JavaScript的知识点。学习一下登录与注册的那个模块。

第三章:验证码和文件的上传与下载

(网站常用模块类型)

验证码存在的意义是防止暴力破解。

这里学一下copy吧。给予三个任务:

1.先学一下JavaScript的登录与注册(自主完成)

可以实现,账号和密码不能为空的JavaScrip的验证,但是,如果要验证账号和密码是否正确这种,需要使用AJAX去创建一个JSP页面去实现。

我尝试在Dao类获取账号和密码(不能,它没有request。去servlet获取真正的数据。),以及使用session购物车的方法 全都失败了。存在一些问题。

用购物车的话,加上一个判断语句,虽然好像是可以实现JavaScript判断,但是session的前提是在购物车不能为空,就算加入了判断条件,也必须登录一次才能实现判断。不符合假如是第一次登录的验证情况。

2.去网上复制验证码的代码为自己所用。

源码网址:OSCHINA - 中文开源技术交流社区

这里遇到了一点麻烦,比如,虽然我复制过来的jsp验证码代码是可以用。

但是在组合使用,将验证码这个模块放入登录和注册时遇到了同步性的问题。比如我使用session在验证码jsp的页面里面来存放验证码。但是到了login.jsp里面,图片显示的验证码,和存入的验证码是不一样的。

这里留作思考,应该怎么修改使得存入的验证码和显示的验证码保持一致性。

补充:验证码的使用方式。

(1)在jsp页面里面,输入<input type ="text">是text类型,此外,需要额外输出<img src="code.jsp"   onclick = "refresh()"  name = "code2">

(2)在使用JavaScript方式,这里用到了refresh()方法。怎么使得点击页面可以让页面刷新。

refresh(){   login.form.code2="code.jsp?id=" + Math.random()  }  

额外注意Math不能少。

意外状况:如果点击图片没有刷新。而且代码没有报错。建议使用debug运行,然后在点击图片,它就会指出你哪些地方错了。(我这次错了一个点就是loginform写成了longinform。但是由于是在JavaScript页面里面,它本身不会报错。只能通过debugging)

(3)怎么在JavaScript里面获取session的数值。可以通过添加jsp表达式。

例如:var code = loginform.code.value

           var code2 = '<% =session.getParamter("code2") %>'  //注意单引号不要少  

(4)尽管按第三步这样获取了,但是最后存在的一个问题是,存入session的验证码和图片显示的验证码不一样的情况。session只保存了上一次刷新之前的验证码数字。(留作思考题)

3.去网上复制上传、下载的代码为自己所用。

(留作作业)

第四章:MVC和Struts2的基本原理(重难点)

首先学习:MVC思想。这是一种设计模式。(建议去学习一本设计模式的书籍,推荐:大话设计模式。)

MVC全称:Model View Controller.       分别对应三个模块。

 在Web开发中,MVC思想的核心概念如下:


(1) M(Model):封装应用程序的数据结构和事务逻辑,集中体现应用程序的状态,当数据状态改变的时候能够在视图里面体现出来。JavaBean非常适合这个角色。


(2) V(View):它是Model的外在表现,当模型状态改变时有所体现。JSP非常适合这个角色。


(3)C(Controller):对用户的输入进行响应,将模型和视图联系到一起,负责将数据写到模型中,并调用视图。Java Servlet非常适合这个角色。

小结:JavaBean封装数据库的内容,(包括:beans和dao类)。servlet响应JSP发送过来的数据,它可以将从JavaBean获得的数据传给JSP。   JSP实现页面。

 再来介绍:Struts2。尽管MVC的设计模式很好用,但是由于不同程序员的风格都不太一样。标准化就显得尤为重要。Struts框架就是一种标准化的结构。

(Pass,在书上这个架构,我没有看出来有什么好处。)

但是MVC的这种设计模式,需要牢记!,以后都会用得上这种思想。

应用举例:

在java和bean的综合总结复习里面,使用了这种思想。可以去看看。

(27条消息) Java和bean(VO)、dao、Servlet、jsp的综合总结复习_one day321的博客-CSDN博客

第四章:Web网站安全

第一种:URL操作攻击

通过猜测某些资源的存放地址,从而非法访问受保护的资源。

第二种:Web跨站脚本攻击(缩写:XSS)

第三种:SQL注入攻击

第四种:密码保护和验证

需要使用MD5或其它的加密算法。单独写一个Java程序。这样存放在数据库的就是密文。

项目实训:

第一个项目:简单的登录与注册,并实现登录之后可以模糊查询学生信息。(思考:加入验证码验证,以及如果账号与密码为空的情况下跳出警告)

第二个项目:投票系统

按设计模式来进行分析。这里我用的是MVC模型设计方法。

(1)思路分析:

1.数据模型:(JavaBeans:包括数据封装beans和数据连接dao类)

                 封装beans:

                              投票模型:存放编号、姓名、得票数

                  数据连接:

                            连接数据库,将数据库内容存入投票模型

2.数据处理:(Servlet)

                  投票处理:接收JSP的投票信息,对数据库内容加1.并将结果返回给JSP

3.功能分析:(Jsp)

                  投票功能:进行投票。

                   //这里书上分的更加细致,一个页面用来显示投票界面,一个页面用来接收用户的投票,将对应得票数加1,工作完毕再跳转回第一个页面。

(必要时,还要进行画图,对结构进行设计。见书本P262,结构设计)

(2)UML类图设计:

投票模型(Vote.java):      no:String 、  name:String 、   ticket:int

连接数据(Votedao.java):    votedao(Vote): ArrayList

投票处理(VoteServlet):      直接获取数据并存入session中

投票页面(vote.JSP):    自主设计

可以开始着手写代码了。

(3)代码分析:(这一步是额外添加的,主要用来存放我自己写代码过程中的不足)

猜你喜欢

转载自blog.csdn.net/qq_55928086/article/details/131270562