广东海洋大学JSP程序设计期末复习总结及模拟试题广东海洋大学jsp复习资料JSP运行原理当服务器上的一个 JSP 页面被第一次请求执行时,服务器上的 JSP 引擎首先将 JSP页面文件转译成一个 java 文件,再将这个 java 文件编译生成字节码文件,然后通过执行字节码文件响应客户的请求,而当这个 JSP 页面再次被请求执行时,JSP 引擎将直接执行这个字节码文件来响应客户,这也是 JSP 比ASP 速度快的一个原因。
而 JSP 页面的首次执行往往由服务器管理者来执行。
这个字节码文件的主要工作是:1、把 JSP 页面中普通的 HTML 标记符号(页面的静态部分)交给用户的浏览器负责显示。
2、负责处理JSP标记,并将有关的处理结果发送到用户的浏览器.3、执行“<%”和“%>”之间的 java 程序片(JSP 页面中的动态部分),并把执行结果交给用户的浏览器显示。
4、当多个用户请求一个 JSP 页面时,Tomcat服务器为每个用户启动一个线程而不是启动一个进程,这些线程由 Tomcat服务器来管理,与传统的 CGI 为每个客户启动一个进程相比较,效率要高的多。
注意:如果对JSP页面进行了修改、保存,那么服务器会生成新的字节码。
我们可以在服务器下的\work\Catalina\localhost\_\org\apache\jsp目录下找到服务器生成的JSP页面对应的JAVA文件,以及编译JAVA文件得到的字节码文件。
JSP指令标记<%@ page contentType=”text/html;charset=GB2312”%><%@ page import= “java.util.*”,“java.io.*”%>如果需要在JSP页面的某处整体插入一个文件,可以使用include指令标记,其标记语法为:<%@ include file=”文件的URL”%>该指令标记的作用是在JSP页面出现该指令的位置处,静态插入一个文件。
include 动作标签格式为:<jsp:include page= "文件的名字" />或<jsp:include page= "文件的名字" >param子标记</jsp:include>该动作标签告诉 JSP 页面动态包含一个文件,即 JSP 页面运行时才将文件加入。
与静态插入文件的 include 指令标签不同;当JSP 引擎把 JSP 页面转译成 Java 文件时,不把 JSP页面中动作指令 include 所包含的文件与原 JSP 页面合并成一个新的 JSP页面,而是告诉Java 解释器,这个文件在 JSP 运行时(Java 文件的字节码文件被加载执行)才包含进来。
一个JSP页面可由5种元素组成普通的HTML标记、JSP标记(如指令标记、动作标记)、变量和方法的声明、Java程序片、Java表达式。
Tag标记<%@ taglib tagdir=”/WEB-INF/tags” prefix=”show”%><%@ tag pageEncoding=”utf-8”%><%@ attribute name=”result” required=”true” type=”ng.Double”%><%@ variable name-given=”time” variable-class=”java.util.Date”scope=”AT_END”%>JSP内置对象pageContext.setAttribute(“page”,”hello”);getParameter(String s)方法获取表单提交过来的信息。
request.setCharacterEncoding(“utf-8”);response.setContentType(“utf-8”);request对象获取请求所提交的各类信息。
getMethod():获取用户提交信息的方式。
例如post或get.getSchema():获得当前页面使用的协议:例如http.getRemoteHost():获取用户机的名称(如果获取不到,就获取IP地址)。
getParameterNames():获取用户提交的信息体部分中name参数值的一个枚举。
<INPUT>标记复选框checkbox<input type=“checkbox“ name=“ch” value=“pink” align=“top“ checked=“java”>隐藏hidden<input type=“hidden”name=“h” value=“123”>response对象的sendRedirect(URL url)方法实现用户的重定向。
response对象调用encodeURL()或encodeRedirectURL()方法实现URL重写。
使用Java数据库驱动程序1.加载Java数据库驱动程序try{Class.forName(“com.microsoft.sqlserver.jdb-c.SQLServerDriver”);}catch(Exccption e){System.out.println(e);}2.建立连接try{ String uri=“jdbc:sqlserver://192.168.100.1:1433;Database-Name=Warehouser”;String user=””;String password=”sa”;con=DriverManager.getConnection(uri,user,passw-ord);}catch(Exccption e){System.out.println(e);}随机查询Statement stmt=con.createStatement(int type,int concurrency);ResultSet re=stmt.executeQuery(SQL语句);type的取值决定滚动方式,取值可以是:ResultSet.TYPE_FORWORD_ONLY;ResultSet.TYPE_SCROLL_INSENSITIVE;ResultSet.TYPE_SCROLL_SENSITIVE;concurrency取值决定是否可以用结果集更新数据库,取值可以是:ResultSet.CONCUR_READ_ONLY;ResultSet.CONCUR_UPDATABLE;获取和修改bean的属性<jsp:useBean id=”apple” class=”tom.jia-fei.Circle” scope=”page”/><jsp:getProperty name=“aplle”property=“radius”/><jsp:setProperty name=”zhang” property=”number” value=”1999001”/>通过HTTP表单的参数的值来设置bean的相应属性的值<jsp:setProperty name=”zhang” property=”*”/><jsp:setProperty name=”zhang” property=”name” param=”xingming”/>编写web.xml<servlet><servlet-name>hello</servlet-name><servlet-class>china.dalian.Hello</servlet-class></servlet><servlet-mapping><servletname>hello</servlet-name><url-pattern>/lookHello</url-pattern></servlet-mapping>getInitParameter(“”);获得配置文件web.xml中的参数.重定向与转发重定向方法:void sendRedirect(String location),对于浏览器来说是将不同的请求。
RequestDispatcher对象RequestDispatcher dispatcher=request.getRequesDispatcher(“a.jsp”);dispatcher.forward(request,response);HttpSession session=request.getSession(true);MVC模式模型:一个或多个Javabean对象,用于存储数据。
视图:一个或多个JSP页面,其作用是向控制器提交必要的数据和为模型提供数据显示,JSP页面使用HTML标记和Javabean标记来显示数据。
控制器:一个或多个servlet对象,根据视图提交的要求进行数据处理操作,并将有关的结果存储到Javabean中,然后servlet使用转发的方式请求视图中的某个JSP页面更新显示。
一、选择题1.在JSP中如果要导入 java.io.* 包,应该使用( A )指令。
A. pageB. taglibC. includeD. forward2.下面哪一个不是JSP本身已加载的基本类?(B)ng.*B.java.io.*C.javax.servlet.*D.javax.servlet.jsp.*3.如果当前JSP页面出现异常时需要转到一个异常页,需要设置page 指令的(B)属性。
A. ExceptionB. isErrorPageC. errorD. errorPage4.对于预定义<%!预定义%>的说法错误的是:(C)A、一次可声明多个变量和方法,只要以“;”结尾就行B、一个声明仅在一个页面中有效C、声明的变量将作为局部变量D、在预定义中声明的变量将在JSP页面初始化时初始化5.Page指令用于定义JSP文件中的全局属性,下列关于该指令用法的描述不正确的是:(D )A. <%@ page %>作用于整个JSP页面。
B. 可以在一个页面中使用多个<%@ page %>指令。
C. 为增强程序的可读性,建议将<%@ page %>指令放在JSP文件的开头,但不是必须的。
D.<%@ page %>指令中的属性只能出现一次。
6.JSP中的隐式注释为 (C )。