这种转换也给你带来很大的便利,不必重复SQL语句的句法,而只需更改其中变量的值,便可重新执行SQL语句。选择PreparedStatement对象与否,在于相同句法的SQL语句是否执行了多次,而且两次之间的差别仅仅是变量的不同。如果仅仅执行了一次的话,它应该和普通的对象毫无差异,体现不出它预编译的优越性。
五.执行许多SQL语句的JDBC程序产生大量的Statement和PreparedStatement对象。通常认为PreparedStatement对象比Statement对象更有效,特别是如果带有不同参数的同一SQL语句被多次执行的时候。PreparedStatement对象允许预编译SQL语句,这样在随后的运行中可以节省时间并增加代码的可读性。
然而,在Oracle环境中,开发人员实际上有更大的灵活性。当使用Statement或PreparedStatement对象时,Oracle会缓存SQL语句以便以后使用。在一些情况下,由于驱动器自身需要额外的处理和在Java应用程序和Oracle服务器间增加的网络活动,执行PreparedStatement对象实际上会花更长的时间。
然而,除了缓冲的问题之外,至少还有一个更好的原因使我们在企业应用程序中更喜欢使用PreparedStatement对象,那就是安全性。传递给PreparedStatement对象的参数可以被强制进行类型转换,使开发人员可以确保在插入或查询数据时与底层的格式匹配。
当处理公共Web站点上的用户传来的数据的时候,安全性的问题就变得极为重要。传递给PreparedStatement的字符串参数会自动被驱动器忽略。最简单的情况下,这就意味着当你的程序试着将字符串“D'Angelo”插入到VARCHAR2中时,该语句将不会识别第一个“,”,从而导致悲惨的失败。web.xml中的filter几乎很少有必要创建你自己的字符串忽略代码。
在Web环境中,有恶意的用户会利用那些设计不完善的、不能正确处理字符串的应用程序。特别是在公共Web站点上,在没有首先通过PreparedStatement对象处理的情况下,所有的用户输入都不应该传递给SQL语句。此外,在用户有机会修改SQL语句的地方,如HTML的隐藏区域或一个查询字符串上,SQL语句都不应该被显示出来。
51.servlet生命周期及各个方法
参考文章Servlet 生命周期、工作原理
52.servlet中如何自定义filter
参考文章Servlet Filter - javawebsoa - 博客园
53.JSP原理
参考文章JSP运行原理及运行过程 - 韩学敏 专栏 - 博客频道 - CSDN.NET
54.JSP和Servlet的区别
(1)JSP经编译后就变成了“类servlet”。
(2)JSP由HTML代码和JSP标签构成,更擅长页面显示;Servlet更擅长流程控制。
(3)JSP中嵌入JAVA代码,而Servlet中嵌入HTML代码。
55.JSP的动态include和静态include
曾经在spring mvc开发web项目时候,为了防止当浏览器回退刷新时出现页面form表单的重复提交而使用prg(post-redirect-get),但是重定向redirect存在一个特点,比如controller中使用modelmap实例添加一个属性errormsg,然后重定向到一个页面fail.jsp,浏览器在重定向的页面fail.jsp中通过request.getattribute("errormsg")返回的是null,因为redirect的两个页面之间的信息是无法直接传递的,但是modelmap中的属性errormsg却会以url参数的形式添加在url中,即fail.jsp。需要注意的是,只有当第一次请求页面或者是jsp文件发生改变的时候jsp文件才会被编译,然后服务器调用servlet类,处理浏览 器的请求。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-93146-10.html
北洋水师已经不先进了