JSP学习考试要点.docx
- 文档编号:30170715
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:22
- 大小:295.71KB
JSP学习考试要点.docx
《JSP学习考试要点.docx》由会员分享,可在线阅读,更多相关《JSP学习考试要点.docx(22页珍藏版)》请在冰豆网上搜索。
JSP学习考试要点
JSP
第一章jsp简介
一个jsp页面是由HTML标记和JSP标记以及Java程序片组成的。
1、Jsp运行原理
当服务器上的一个jsp页面被第一次请求执行时,服务器上的jsp引擎首先将jsp页面文件转译成一个Java文件,并编译这个Java文件生成字节码文件(.class文件),然后执行字节码文件响应客户的请求。
而当这个JSP页面再次被请求执行时,JSP引擎将直接执行字节码文件来响应客户。
2、搭建JSP开发运行环境
2.1Tomcat(安装版/绿色版)
(1)配置:
系统环境变量(绿色版必须)
JAVA_HOME=%java安装目录%
测试:
http:
//localhost:
8080
(2)配置服务器端口
在server.xml(conf文件夹)文件中找到如下代码:
将8080改为其他端口,重新启动服务器。
(3)应用部署(配置站点)
Ⅰ、站点文件夹结构:
见TOMCAT安装目录\webapps目录下的示例
Ⅱ、将站点文件夹放置在TOMCAT安装目录\webapps目录下:
访问http:
//localhost:
8080/站点文件夹名(如test)
Ⅲ、将站点文件夹放置在其他位置:
如G:
\test
建配置文件“访问路径名.xml”:
如test.xml
位置:
TOMCAT安装目录\conf\catalina\localhost\
内容:
访问http:
//localhost:
8080/访问路径名:
如http:
//localhost:
8080/test
第二章JSP语法
1、JSP页面结构
1.1HTML标记:
<>
1.2声明——变量、方法、类:
<%!
%>
声明变量、方法、类,在整个页面有效
JSP引擎为每个客户启动一个线程,所有线程共享这些声明的变量。
声明的变量、方法、类占有的内存空间直到JSP引擎关闭才释放。
为了避免成员变量被所有用户共享,在操作成员变量的方法用synchronized关键字修饰。
1.3Java程序片:
<%%>
<%Java程序片%>
程序片中声明的是局部变量。
服务器直接执行java程序片。
每个线程被启动时,都会重新为Java程序片中的变量分配内存。
1.4Java表达式:
<%=%>
用于在页面上输出信息,语法格式:
<%=表达式%>
表达式的值由服务器负责计算,并将计算结果用字符串的形式发送到客户端显示。
System.out.print():
在控制台输出
out.print():
在页面输出
<%=%>:
在页面输出
1.5注释
HTML注释:
—注释内容-->查看源文件时可以看到
JSP注释:
<%--注释内容--%>查看源文件时看不到
1.6JSP标签,分为指令标签和动作标签
1.6.1page指令
(1)<%@page%>指令作用于整个JSP页面
(2)一个页面中可以有多个“<%@page%>“
(3)<%@page%>指令可放在页面任何位置:
为了增强JSP的可读性,养成好的编程习惯,最好还是把它放在JSP文件的顶部。
<%@pagecontentType=”text/html;charset=GB2312”%>
1.6.2包含指令include
(1)<%@includefile=”相对位置”%>
(2)include指令向当前页面内嵌入另一个文件的内容
(3)一定要先写好被嵌入的文件,否则主体程序的编译不能被通过
(4)是一种静态包含
1.6.3动作标签include
动态包含一个文件:
txt、html、jsp
(1)语法格式:
includepage=”文件名”/>或 includepage=”文件名”>param标记 include> 没有param标记时,必须使用第一种形式 (2)动态包含 1.6.4两种包含文件(静态包含和动态包含)的区别 (1)include指令标签: <%@includefile=”文件名”%> 静态嵌入; 在编译阶段就处理所需要的文件,被处理的文件在逻辑和语法上依赖于当前JSP页面,其优点是页面的执行速度快。 (2)include动作标签: includepage=”文件名”/> 动态嵌入; 在JSP页面运行时才处理文件,被处理的文件在逻辑和语法上独立于当前JSP页面,其优点是可以使用param子标记更灵活地处理所需要的文件,缺点是执行速度慢。 1.6.5动作标签forward (1)forward标签停止当前页面的执行,转向另一个页面,而 forward>后的代码不再执行。 (2)语法格式: forwardpage=”要转向的页面”/> 或 forwardpage=”要转向的页面”>param标记 forward> 没有param标记时,必须使用第一种形式 1.6.7动作标签param (1)param用于传递参数 (2)语法格式: paramname=”参数名”value=”值”/> eg: paramname=”i”value=”100”> (3)param提供附加信息,不单独出现。 (4)可以有多个”jsp: param”标记,即传递多个参数。 其他动作标记使用param标记传递数据时,要跳转的页面中用request对象接收参数,接收的都是字符串,根据需要再转换类型。 1.jsp <%doublei=Math.random(); %> forwardpage=“2.jsp”> paramname=”number”value=”<%=i%>”/> forward> 2.jsp <%Strings=request.getParameter(“number”); %> 第三章JSP内置对象 request: 包含客户端的请求信息 response: 对客户端的响应 out: 传送响应的输出流 session: 客户端请求时的一段对话 application: 所有客户共享的对象 请求响应对象: http协议称为请求响应协议 get方法和post方法的主要区别是: 使用get方法提交的信息会在提交的过程中显示在浏览器的地址栏中;post方法提交的信息不会显示在地址栏中。 1、request对象 (1)获取客户提交的信息最常用的方法是: request.getParameter(Stringname) (name可以是表单name属性,也可以是变量) (2)request对象获取传递的中文会出现乱码问题 处理汉字信息: 两种方法 Ⅰ、使用page指定contentType属性的值时,做如下指定: <%@pagecontentType=”text/html;Charset=GB2312”%> 即将其中出现的Charset中的首写字母大写(C为大写字母)。 Ⅱ、把<%@pagecontentType=”text/html;charset=GB2312”%> 出现的charset中的首写字母小写(c为小写字母),然后内置对象request将获取的信息新编码,即用ISO-8859-1进行编码,并将编码存放到一个字节数组中,然后再将这个数组转化为字符串。 如下列所示: Stringstr=request.getParameter(“massage”); Byteb[]=str.getBytes(“ISO-8859-1”); str=newString(b); (3)setAttribute(String变量名,Object值): 设置一个属性值保存到request对象中,可以是对象类型。 request.setAttribute(String变量名,Object值); (4)getAttribute(String变量名): 得到request对象中一个属性的值。 2、response对象 (1)response.setContentType(Strings): 设置响应类型 响应类型有: text/html、text/plain、application/x-msexcel、application/msword等。 Eg: response.setContentType(“text/plain;charset=gbk”); (2)sendRedirect(URLurl): 重定向到另一个页面,其中url可以带参数 (3)response的HTTP文件头 当客户访问一个页面时,会提交一个http头给服务器,响应也一样,此方法可以动态地设置响应头和值: response.setHeader(Stringhead,Stringvalue); eg: out.println(newDate()); response.setHeader(“Refresh”,”5”);//5秒刷新一次 3、out对象 (1)用于向网页输出数据,效仿BufferedWriter和PrintWriter的某些功能 Ⅰ、out.print(“”)或out.println(“”)向客户端输出数据 Ⅱ、out.newLine()输出一个换行符号 Ⅲ、out.flush()将缓冲区的内容写入输出流并清空 Ⅳ、out.close()关闭输出流 4、session对象 (1)session的作用: session是客户端与服务器端的一次对话,用来保存用户的信息,WebServer通过读取session来获取客户端的状态信息。 同一个客户在不同的Web服务目录中的session是互不相同的。 (2)getId(): 获得sessionID 调用方式: session.getId(); ID号被JSP引擎发送到客户端,存放在Cookie中。 (3)如果客户的浏览器不支持Cookie,得到的sessionID就不是唯一的,可以通过URL重写来实现session对象的唯一性。 URL重写: response.encodeURL(“next.jsp”) 或response.encodeRedirectURL(“next.jsp”) eg: Stringstr=response.encodeURL(“next.jsp”); (4)setAttribute(Stringname,java.lang.Objectvalue): 设定指定名字的属性值,并且存储在session对象中。 eg: Useru=newUser(); session.setAttribute(“user”,u); (5)getAttribute(Stringname): 获得指令名字的属性,若该属性不存在,将会返回null。 eg: Useru=(User)session.getAttribute(“user”); (6)isNew(): 判断目前session是否为新的Session,若是则返回true,否则返回false。 5、application对象 (1)application对象由服务器负责创建。 ServletContextapplication=getServletContext(); (2)与session的区别: Ⅰ、session是用户作主角,随用户的断开而消失;application是服务器作主角,随服务的关闭而消失。 Ⅱ、application可在一个页面上保留多个用户的信息。 session对象可在多个页面之间传递一个用户的特定信息。 (3)getAttribute(Stringname): 返回由name指定名字的application属性的值 (4)setAttribute(Stringname,Objecto): 使用o的值来设置name属性 第四章文件操作 1、文件上传 (1)File类型表单的格式: (2)处理页面: 服务器读取 request.getInputStream(): 获得输入流,读取客户上传的信息,包括文件内容及表单域的信息 2、文件下载 (1)response.getOutputStream(): 获得输出流,服务器文件写入这个流,客户就可以下载这个文件。 (2)提供下载功能时,应使用response的setHeader()方法发送响应头信息,说明文件的MIME类型(即contentType)。 response.setHeader(“Content-disposition”,“attachment;filename=”+下载的文件名字); 第五章JSP使用数据库 ODBC(OpenDataBaseConnection,开放数据互联) JDBC(JavaDataBaseConnectivity,Java数据互联) JDBC支持数据库访问的模型: (1)二层模型 Javaapplet/应用程序直接与数据库交互 (2)三层模型 使用中间层(JavaBean) 1、JDBC-ODBC桥接器连接数据库的步骤 (1)加载驱动程序(java.lang包) Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); (2)创建ODBC数据源 (3)连接数据库(java.sql.Connection包) Connectionconn; conn=DriverManager.getConnection(“jdbc: odbc: 数据源”); (4)获得Statement对象 Statementst; st=conn.createStatement(); (5)执行SQL语句记录集 ResultSetrs; rs=st.executeQuery(“sql语句”); (6)处理记录: 增删查改 (7)关闭数据库: conn.close(); 2、顺序查询 (1)使用结构集的next()方法,可以顺序查询,返回boolean类型数据。 初始状态游标指向第一行之前 (2)rs.getString (1)不能多次使用 (3)不能先rs.getString (2)再rs.getString (1) 3、游动查询 (1)Statementst=conn.createStatement(inttype,intconcurrency); ResultSetrs=st.executeQuery(sql语句); (2)type取值决定滚动方式,取值可以是: ResultSet.TYPE_FORWORD_ONLY: 结果集的游标只能向下滚动。 ResultSet.TYPE_SCROLL_INSENSITIVE: 结果集的游标可以上下移动,当数据库变化时,当前结果集不变。 ResultSet.TYPE_SCROLL_SENSITIVE: 返回可滚动的结果集,当数据库变化时,当前结果集同步改变 (3)concurrency的取值决定了是否可以用结果集更新数据库,其取值为: ResultSet.CONCUR_READ_ONLY: 不能用结果集更新数据库中的表; ResultSet.CONCUR_UPDATEBLE: 能用结果集更新数据库中的表。 (4)游动查询经常用到ResultSet的下述方法: publicbooleanprevious(): 将游标向上移动,该方法返回boolean型数据,当移到结果集第一行之前时返回false; publicvoidbeforeFirst(): 将游标移动到结果集的初始位置,即第一行之前; publicvoidafterLast(): 将游标移动到结果集的最后一行之后; publicvoidfirst(): 将游标移动到结果集的第一行; publicvoidlast(): 将游标移动到结果集的最后一行; publicbooleanisBeforeFirst(): 判断游标是否在第一行之前; publicbooleanisAfterLast(): 判断游标是否在最后一行之后; publicbooleanisFirst(): 判断游标是否在第一行; publicbooleanisLast(): 判断游标是否在最后一行; publicintgetRow(): 得到当前游标指定的行号,行号从1开始,若结果集没有行,返回0; publicbooleanabsolute(introw): 将游标移动到参数row指定的行号; 注意: 如果row取负值,就是倒数的行数,absolute(-1)表示移动到最后一行。 当移动到第一行前面或最后一行后面时,返回false。 3、JDBC纯驱动程序连接数据库 (1)驱动程序存放位置: (2)连接SQLServer2005数据库 Ⅰ、加载驱动程序 try{ Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”); //SQLServer2000是 //“com.microsoft.jdbc.sqlserver.SQLServerDriver” }catch(ClassNotFoundExceptione){…} Ⅱ、创建连接 try{ Connectionconn=DriverManager.getConnection(“jdbc: sqlserver: //localhost: 1433;DatabaseName=数据库的名字”,”sa”,”sql”); //SQLServer2000是 //“jdbc: Microsoft: sqlserver: //localhost: 1433;DatabaseName=数据库的名字” }catch(SQLExceptione){…} 4、查询Excel表格 4.1使用桥驱动 (1)设置ODBC数据源连接Excel (2)加载驱动 (3)连接字符串 (4)Sql语句: Ⅰ、select*from[sheet名$] Ⅱ、select*fromexcel中定义的表名 (5)访问列: rs.getString(列号) 5、使用同步连接 数据库连接比较耗时,因此将连接对象定义在“<%! %>“中,多个用户共享。 6、数据库连接池 (1)负责分配、管理和释放数据库连接,允许应用程序重复使用一个现有的连接而不是新建,此技术明显提高数据库操作的性能。 (2)数据库连接池初始化时将创建一定数量(最小连接数)的数据库连接放到连接池中,无论这些连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。 (3)当程序向连接池请求的连接数超过最大连接数时,这些请求将被加入到等待队列中。 (4)实现数据库连接池必须通过DataSource对象的方式代替DriverManager来获得连接。 第六章JavaBean 1、JavaBean概述 基于Java的组件技术,表现为一种Java类,通过封装属性和方法成为具有某种功能或处理某种业务的对象。 JavaBean组件的作用: 通过它可以实现代码的重新利用。 1.1JavaBean的分类 (1)可视化组件 有GUI。 例如,在AWT或Swing下各种组件的应用。 (2)非可视化组件 没有GUI界面的JavaBeans。 用来封装事务处理或数据库操作等,很好地实现数据处理和前台程序(*.jsp)的分离。 如: 连接数据库的操作封装成JavaBean。 在JSP中主要使用非可视化组件。 1.2JavaBean的组成: (1)属性: 对象的属性,并提供属性的读取和设置方法,遵守某种命名规则。 (2)方法: 其他对象与Bean进行信息交互的途径。 (3)事件: Bean与其他组件交换信息的主要方式是发送和接收事件。 1.3JavaBean的优点: 2、编写JavaBean 2.1编写JavaBean的法则 (1)使用getXxx()获取属性xxx的值 使用setXxx()设置属性xxx的值 Boolean类型属性可以使用isXxx()代替get。 (2)属性是private,类中声明的方法的访问属性都必须是public (3)若有构造方法,必须有一个不带参数的公用构造器。 完成各个属性默认值的设置。 2.2JavaBean属性 (1)Simple属性: 单一属性。 getXxx()/setXxx() (2)Index属性: 数组类型的属性。 int[]a setA(int[]a)int[]getA() setA(intindex,inta)intgetA(intindex) (3)Bounds属性: 绑定属性 (4)Constrained属性: 限制属性 3、使用JavaBean 3.1Beans的存放目录;将编译成功含有Bean的包放在虚拟目录\WEB-INF\classes目录下。 4、useBean标签 useBeanid=”javaBean的名字”class=”bean的类”scope=”bean有效范围”> useBean> eg: useBeanid=”circle”class=”tom.jiafei.Circle”scope=”page”/> 其中的“bean的类”要带有包名 scope取值: page: JSP分配给每个客户不同的bean,功能一样,占据不同的内存单元。 Bean的有效范围是当前页面。 session: JSP分配给每个客户不同的bean,有效范围是会话期间。 request: JSP分配给每个客户不同的bean,有效范围是request期间。 application: JSP分配给每个客户一个共享的bean,一个人改变bean,则所有人都被改变,这种改变直到服务器关闭才取消。 5、获取和修改Beans的属性 (1) getPropertyname=”bean的名字”property=”bean的属性”/>或 getPropertyname=”bean的名字”property=”bean的属性”> getProperty> 获取的属性值,无论原先是什么类型,都将被转换为一个String类型的值。 (2)setProperty动作标记可以通过两种方式设置bean属性的值。 Ⅰ、将bean属性的值设置为一个表达式的值或字符串 Bean属性的值设置为一个表达式的语法格式为: setPropertyname=“bean的名字”property=“bean的属性”value=<%=表达式%>/> Bean属性
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JSP 学习 考试 要点