`
yunchow
  • 浏览: 317708 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

JDBC与JSP简单总结

    博客分类:
  • J2EE
阅读更多

动态脚本语言,运行在web服务器上
首先JSP页面会被转成JAVA文件,并编译马class,再运行
1,JSP基本部分
<%! %> 定义段,常在其中定义方法和属性
注意:1,尽量不在其中定义属性,因为牵涉到线程数据同步问题
     2,里面的方法一般都定义成private的
     3,如果一定要定义属性,那么对这个属性的访问方法就要加上synchronized关键字
<% %>
JSP脚本,在一个页面中,不管分成多少个部分的脚本,这些脚本最终都会被生成在JAVA文件的同一个方法中,这个方法和在定义段中定义的那些方法是并列的
在这些脚本中,可以访问一系列内置对象,但在定义段中不可以
<%= %>
JSP表达式,这个表达式等同于out.println()方法,这个表达式是独立的,不能镶在<% %>
<%--  --%>
JSp注释 ,不会生成到客户端,请和html的注释比较
-----------------------
2.JSP指令
<%@ page %> 用于设置当前页面一系列基本信息
 import:用于引入在当前页面中需要的Java包,不同包之间用','隔开
  唯一可以重复出现多次的page属性
 pageEcoding:指定当前页面编码,请参照中文问题
 language java
 isErrorPage:在当前页面中,是否可以使用exception内置对象
 errorPage:当前页面如果产生错误后,转往哪个页面
 autoFlush:是否自动刷出缓存
<%@ include %> file属性指定要引入的文件
 这个文件是被引入后,再和当前页面一起去生成java文件,而不是先单独运行后把页面 
 结果返回.
 请注意和<jsp:include>之间的区别
<%@ taglib uri= prefix %> 为了引入标签库
 uri部分指明了标签库或者标签文件tld所在位置
 prefix是标签的前缀,使用上采用<c:out>
--------------------
3.JSP的动作
3.1 <jsp:include page="" >把page的页面先执行后,再把最后返回的结果引入当前页面,对于需要动态的部分,往往采用这样的方式.
 <jsp:include page="" ></jsp:include>如果这样写,意味着当中一定要有<jsp:param>来传递参数
 <jsp:include page=>
  <jsp:param name= value= />
 </jsp:include>这是正传递参数的方式
3.2 <jsp:forward page=>跳转到page所在的页面
 跳转是服务器内部的跳转,或者叫转发,不是重定向
 地址栏地址不会变化
 request会一直被保留
 也可以结合<jsp:param>
 注意和response.sendRedirect进行比较
 这个动作等同于request.getRequestDispatcher("xx").forward(request,response)
3.3 <jsp:useBean><jsp:setProperty><jsp:getProperty>操作javabean的
 
 <jsp:useBean id= class= scope= />
 可以定义任何类
  class必须是带包名的类名,哪怕已经引入过了
 这个操作相当于做了两样事情,一个是在scope所对应的attribute中set了一个名字为id="xx"的属性,另一个是定义了一个jsp中的变量,可以在小脚本直接访问
  <jsp:setProperty name= property="*|xxx" param= value= />填充一个由<jsp:useBean>所定义的javabean对象.填充的方式就是调用setter方法
 name和<jsp:useBean>的id相同
     四种填充方式:
 name= property="*" 把所有提交来的表单中的内容填充到对应bean的同名属性中,并做类型转换
 name= property="xx"把表单中和xxx 相同的部分,填充到xx属性
 name="xx" property="bb" param="aa" 把表单中的aa和bean中的bb属性相对应
 name="x" property="xx" value="zxxx" 把value中的值填充到xxx属性,value中的值可以是一个单纯的字串,也支持jsp表达式和el
 param和value不能见面
<jsp:getProperty> 根据bean的name来调用对应的getter方法
-------------------
4. jsp的内置对象
4.1 jsp中的内置对象有作用域,分别为page,request,session,application
 jsp的内置对象一共有9个,分别是
 1, pageContext(page),request(request),session(session),application(application)
  都可以setAttribute和getAttribute
 2,剩余的5个,作用域都是page
  response,out,cookie,page,config最后两个是和servlet相关的
4.2 作用域
 作用域的应用很广泛,EL,JSP动作都有作用域,但说到底,都是attribute的存活范围
 page:当前页面
  include指令
 request:
  forward跳转
  include动作
  不包括重定向
  最常见的,从一个表单提交到当前页面的信息
 session:
  在当前页面打开的时间内都有效
  包括重定向
  但是页面关闭就失效,还可能在时间到期和手动调用invalidate方法后失效
 application:
  在整个应用存在期间都有效,包括重新打开窗口
  但不等同于把tomcat启动起来
  把应用重新部署,application就失败了
4.3 内置对象分别说
 request:获得表单提交的内容
  getParameter(); // string
  getParamterValues(); // string[]长用于获取多选的内容
  获得表单内容时候,记得先判断是不是null
  为了规避nullProinterException我们常操作的时候把常量放前面肯定不会是null的放前面
  操作attribute,setAttribute,getAttribute,removeAttribute();
  获得http的信息:getHeaders("user-Agent");getProtocol()
  获得当前应用的一些信息:getContextPath获得RootURL,常用于拼接绝对路径
   getServletPath RootURL如果面的那些访问路径
   getRemoteAddress
   gethost();
  setCharacterEncoding(),设置字符集转换
  和cookie交互
   getCookie :返回Cookie[], 需要遍历这个数组,才能取得需要的cookie内容
   替代方案是使用EL表达式${cookie.xxx}
 response对象:不能操作属性
  然后有一些set方法
  setContentType:指定产生的页面的一些类型和编码
  sendRedirect();//重定向,见后面的重定向和转发的比较
  encodeURL : 在cookie失效的情况下,通过此方法来使得session仍然可用
  addCookie : 在本地生成一个cookie文件,并保存对应cookie对象
 session : 会话信息,常用于保存用户登录,购物车等等.
  setAttribute等操作属性的方法
  invalidate方法来使得当前session失效
 cookie : 其实是通过上面的response和request来操作的.
  Cookie cookie = new Cookie("键", "值");
  cookie.setMaxAge();//用于指明cookie的生存时间,如果不指定的话,则窗口关闭cookie
  session的实现,默认是使用cookie机制
  必须要在response.addCookie()前调用
  cookie和session的比较见后
 application: 常用的就是操作attribute,ServletContext
 out : 是PrintWriter的子类,JspWriter
  println(0, newLine()
 pageContext : 操作是页面里的属性,不要和page搞混了
  setAttribute等操作属性的方法
  可以获得其他内置对象
   getOut
   getSession()
 4.5 内置对象的几个特别说明
4.5.1
 forward和sendRedirect的区别
  前者是服务器内部跳转,后者是重定向
  前者地址栏里不会改变,后者会
  前者带着request跑,后者不带
  前者只能访问当前应用,其绝对路径写法不带RootURL
   后者可以访问当前web服务器上的其他应用,其绝对路径比较要带上rootURL
  前者跳转的时候,并不改变其相对路径的起始目录,所以在写路径时,尽量优先考虑欢乐能几朝路径
 
4.5.2 cookie和 session的区别
 前者是文件,保存在磁盘,后者是数据,存在内存
 前者的生存周期,由setMaxAge决定,不随应用的关闭而消失
 后者生存周期只在当前窗口内,窗口关闭则over
 前者保存在客户端,后者保存在服务端
 前者不安全,后者相对安全,所以牵涉隐私信息,不要放cookie里
4.5.3 中文问题的处理
 要区分是post还是get
 对于post方式,我们需要调用request.setCharacterEncoding()转码
 对于get方式,需要通过getBytes()逐个来转码
 对于sendRedirect的时候,要特别记得要多转一次或者使用URLEncoding类来转一下
 所有页面要使用统一的pageEncoding设置,推荐GBK或者UTF-8
 对于tomcat,我们有一些特别的设置,可以简化中文问题
  conf/server.xml中的<connector>里增加URIEncoding="xx"或者useBodyEncodingForURI="true"
  增加完毕后,只需要在每个页面上统一使用request.setCharacterEncoding设置.
  

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    JSP_WEB实验报告

    JSP实验环境组建、简单JSP应用、JSP内置对象的应用、Servlet的应用、JSP访问数据库的应用

    7个 JSP小项目源代码和笔记资料汇总 项目总结 开发经验

     项目01_JSP+JDBC留言管理程序(代码+笔记)  项目02_使用JSP完成简单的登陆程序(代码+笔记)  项目03_JSP+DAO留言管理程序(代码+笔记)  项目04_使用JSP基于数据库完成用户登陆(代码+笔记)  项目05_MVC+DAO_...

    B/S架构基于JSP的在线购物中购物车的设计与实现

    3.4通过JDBC对数据库进行访问 13 4系统需求分析 15 4.1系统需求 15 4.2系统功能 16 5系统设计 17 5.1模块功能设计 17 5.1.1在线购物流程图显示: 18 5.1.2用户注册流程 18 5.1.3用户登陆流程 19 5.1.4购物车流程 20 ...

    网页教程《跟姐姐学JSP》

    2.1. 另一个简单jsp 2.2. 中文乱码 2.2.1. 先解决响应中的乱码 2.2.2. POST乱码 2.2.3. GET乱码 3. 请求的跳转与转发 3.1. 范例 3.2. 如果用forward 3.3. 如果用redirect 3.4. forward和redirect的问题 ...

    jdbc分页demo

    这是一道面试题,要做一个简单的分页显示,要求查询数据库,将数据查出来显示到jsp页面,听起来简单,但纯手写也麻烦所以总结了一下。

    JavaWeb数据库应用开发基础

    以下总结了课程中学习的四种JavaWeb数据库应用开发方式,其中第前两种适合业务逻辑和功能简单的系统;后两种则是经典的MVC开发模式,推荐大家主要采用这种方式。此外,在有一定基础后可以学习使用主流开发框架,如...

    Jsp图书馆管理系统软件设计(软件源码++数据库+sql本科毕业论文WORD文档资料).zip

    第六章为结束语,为此次毕业设计做一个总结,总结所获得的经验和体会。 第二章 图书借阅管理需求分析 2.1 可行性分析 采用现代化统一的计算机信息网站系统,能够有效优化图书馆管理系统,使其高效的发挥最大作用,...

    Java语言基础下载

    内容总结 13 独立实践 14 第二章: 面向对象概述 15 学习目标 15 面向对象(Object Oriented) 16 面向对象的主要特性 18 抽象(Abstraction) 18 封装(Encapsulation): 19 多态(Polymorphism) 20 面向对象的优点 22 ...

    java 面试题 总结

    22、JSP中动态INCLUDE与静态INCLUDE的区别? 动态INCLUDE用jsp:include动作实现 &lt;jsp:include page="included.jsp" flush="true" /&gt;它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。 静态...

    jpivot学习总结.doc

    它的属性比较简单,只有 id 和 queryName 两个,而且比较容易理解。 4.4. clickable 该标签的作用是给一个 dimension 或一个 level 里的所有的 members 加上超链,使得它们变的可以进行点击操作。生成的 URL 中...

    JavaWeb实验报告.doc

    Java Web实验报告 Java Web Experiment Report 学生所在学院: 学院 学生所在班级: 学 生 姓 名 : 学 号 : 指 导 教 师 : 月 一、客户端开发设计:系统设计 一、实验目的 掌握Html的语法和用法,能制作简单的...

    整理后java开发全套达内学习笔记(含练习)

    abstract (关键字) 抽象 ['æbstrækt] access vt.访问,存取 ['ækses]'(n.入口,使用权) algorithm n....Annotation [java] 代码注释 [ænәu'teiʃәn] anonymous adj.匿名的[ә'nɒnimәs]'(反义:directly adv....

    Java面试宝典2010版

    14. JSP中动态INCLUDE与静态INCLUDE的区别? 89 15、两种跳转方式分别是什么?有什么区别? 89 16、页面间对象传递的方法 89 17、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 90 18、MVC的各个部分都有...

    涵盖了90%以上的面试题

    Java中的异常处理机制的简单原理和应用。 java socket java序列化 JVM加载class文件的原理 双亲委派模型 为什么要自定义类加载器 如何自定义类加载器 什么是GC 内存泄漏和内存溢出 Java的内存模型(JVM的内存划分) ...

    java-ee电子商城系统课程设计.doc

    Hibernate 可以应用在任何使用JDBC 的场合, 既可以在Java 的客户端程序使用, 也可以在Servlet/JSP 的Web 应用中使用。 AJAX是Asynchronout JavaScript and XML的缩写,它并不是一门新的语言或技术,实际上是几项...

    Spring.3.x企业应用开发实战(完整版).part2

    10.5.2 Hibernate+Spring JDBC混合框架的事务管理 10.6 特殊方法成漏网之鱼 10.6.1 哪些方法不能实施Spring AOP事务 10.6.2 事务增强遗漏实例 10.7 数据连接泄漏 10.7.1 底层连接资源的访问问题 10.7.2 Spring JDBC...

    Spring3.x企业应用开发实战(完整版) part1

    10.5.2 Hibernate+Spring JDBC混合框架的事务管理 10.6 特殊方法成漏网之鱼 10.6.1 哪些方法不能实施Spring AOP事务 10.6.2 事务增强遗漏实例 10.7 数据连接泄漏 10.7.1 底层连接资源的访问问题 10.7.2 Spring JDBC...

    图书馆管理系统(Java) 优秀毕业设计论文+软件设计源码.zip

    图书馆管理系统(Java) 优秀毕业设计论文+软件设计源码 摘 要 随着科学技术的进步,计算机行业的迅速发展,大大提高人们的工作效率。...第六章为结束语,为此次毕业设计做一个总结,总结所获得的经验和体会。

    Spring面试题

    在对由三部分组成的 Spring 系列 的第 1 部分进行总结时,我使用了一个示例,演示了如何通过 Spring IOC 容器注入应用程序的依赖关系(而不是将它们构建进来)。 我用开启在线信用帐户的用例作为起点。对于该实现,...

    【计算机软件毕业设计】二手车交易平台的分析、设计与实现文献综述1.doc

    文献综述 摘 要 Web开发技术和Web开发框架整合实践研究是这个时代的一个热点,本文在参阅国内 外Web开发技术和Web开发框架及主要几个框架相关文献的基础上,对Web开发框架研究作 了较为全面的总结和梳理,并结合Web...

Global site tag (gtag.js) - Google Analytics