web应用开发技术,jsp应用开发技术复习要点
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JSP复习要点
1、jsp运行原理
首先由浏览器向Web服务器提出访问JSP页面的请求(Request),然后由JSP容器负责将JSP转换成Servlet,产生的Servlet经过编译后生成类文件,然后再把类文件加载到内存进行执行。
最后由Web服务器将执行结果响应(Response)给客户端浏览器。
JSP页面转换为Servlet仅限于第一次执行时,以后再执行时JSP容器将直接执行编译后的类文件。
2、CLASSPATH和PATH路径的设置以及各自作用。
CLASSPATH环境变量,CLASSPATH用于指明所有需要引用的类所在的目录。
一般设置其为“.;C:\jdk\lib\tools.jar;C:\jdk\lib\dt.jar”。
(假设JDK安装目录为C:\JDK)其中包含的“.”表示当前Java文件所在的路径。
设置Path变量的作用是在使用Java命令时,系统会在Path变量所包含的路径中自动搜索命令所对应的.exe可执行文件。
如果JDK安装目录为C:\JDK,则设置为“C:\JDK\bin”。
3、JSP include指令与<jsp:include >动作。
JSP include指令的基本语法如下:
<%@ include file=”relative URL” %>“file”属性指向需要引用的HTML页面或JSP页面,路径必须是相对路径。
JSP include动作允许在JSP页面中包含文件,基本语法如下所示:<jsp:include page="relative URL | <% =expression %>" flush="true" /> 其中page属性指明了需要包含的文件路径,flush属性必须设为
true(JSP默认值为false)。
二者的区别:两者都可以包含静态页面,此时两者无任何区别。
当它们包含动态页面时,前者包含的是内容,最终产生一个类文件;后者包含的是结果,最终产生两个类文件。
4、page指令的语法形式。
<%@ page language="java" contentType="text/html; charset=GB18030"%>
<%@ page import=”package1.class1,package2.class2”%>
<%@ page errorPage=”url” %> <%@ isErrorPage=”true|false”%>
5、taglib指令的基本语法如下:
<%@taglib url=”relative tagLibURL” prefix=”tagPrefix” %>
其中url属性用来指明自定义标记库的存放位置。
tagPrefix是为了区分不同标记库中的相同标记名,就如同Java中包名和类名的关系。
6、注释。
JSP注释可以分为两种。
一种是可以在客户端显示的注释,称为客
户端注释;另一种是客户端不可见,仅供服务器端JSP开发人员可见的注释,称为服务器端注释。
客户端注释的基本语法格式如下所示:
<!—comment[<%= expression%>]--> 在浏览器的HTML源代码中可以看到该注释。
服务器端注释可以有两种表述方式:
<%/* comment */%> 和 <%--comment--%>
这两种表述方式效果一致,其注释内容将不会被发送到客户端。
7、JSP动作元素。
7项标准的“动作元素”(也称为“行为元素”)
<jsp:include>包含动作;
<jsp:forward page=”url”>(相对路径),该动作元素把当前页面A
重新导向到另一页面B上,客户端看到的地址是A页面的地址,
而实际内容显示的是B页面的内容。
<jsp:plugin>用于在客户端浏览器中执行一个Bean或者显示一个
Applet。
<jsp:param>用来提供参数信息。
<jsp:useBean>基本语法:
<jsp:useBean id="name" scope= "page" class="package.class" />
该动作的目的是实例化一个JavaBean类。
其中,id是用户定义的该实例在指定范围中的名称。
scope参数用于指明该JavaBean应该在多大的范围内产生作用。
class参数用于指定需要实例化的类。
<jsp:getProperty>用于从JavaBean中获取指定的属性值,其语法
结构为:
<jsp:getProperty name="beanInstanceName" property="propertyName" />其中name属性指明了通过<jsp:useBean>引用的Bean的id属性,property 属性指定了想要获取的属性名。
<jsp:setProperty>调用Bean中的set方法,设定Bean中的各个参数
的值。
基本语法:
<jsp:setProperty name=” ” property=” ” value=” ”>利用JavaBean实例化一个对象之后,该动作可以为对象的所有属性赋值,name为实例化的对象名称,property为该对象的各个属性。
8、JSP常用四个内置对象。
out是用于向客户端输出的PrinterWriter对象。
这里的out实际上
是带有缓冲特性的PrinterWriter,可以称之为JspWriter。
Request对象是HttpServletRequest的一个实例,用于获取客户端
请求的参数。
Response对象是HttpServletResponse的一个实例,用于控制HTTP
连接。
Session对象会话对象,是HttpSession的一个实例,用于指定在
一定时间内分别保存每一个用户的信息。
9、<form>标记和<input>标记的用法。
<form>标记用于定义表单,表单的关键要素有三个:Action、Method、表单控件(即input标记)。
语法形式:
<form id="form1" name="form1" method="post|get" action="url">
单行文本域:<input type="text" name="textfield2" />
<p>单选框:
<label><input type="radio" name="radiobutton" value="男" />男
</label>
<label><input type="radio" name="radiobutton" value="女" />女
</label>
</p>
<p>隐藏域:<input name="hiddenField2" type="hidden" value="日本不在!!!" /></p>
<p>提交按钮:<label><input type="submit" name="Submit2"
value="提交" /></label></p>
<p>密码:<label><input type="password" name="textfield" /></label> </p>
</form>
10、request对象的主要方法。
String getParameter(String name) 获取客户端传送给服务器的参数
值,参数由name属性决定。
String[] getParameterValues(String name) 获取指定参数的所有
值。
参数名称由“name”指定。
setCharacterEncoding(“GBK”)指定字符编码的方式,一般用
于处理汉字。
getRequestDispatcher(“url”)指定url,请求转发。
11、response对象的主要方法。
void sendRedirect(String url) 向服务器发送一个重定位至url位置的请求。
12、session对象的主要方法。
Object getAttribute(String name) 获取指定名字的属性。
void setAttribute(String name, ng.Object object) 设定指定名
字属性的属性值,并存储在session对象中。
13、在JSP中请求转发有两种方法:<jsp:forward page=”url”>动作和
request.getRequestDispatcher(“url”)。
页面跳转有一种方法:response.sendRedirect(“url”)方法。
在Servlet中,页面跳转的方法:(参考例6.6)
public void doPost(HttpServletRequest req, HttpServletResponse res) throws
ServletException, IOException {
//控制中文字符的处理
req.setCharacterEncoding("GB2312");
HttpSession session = req.getSession(false);
if (session == null) {若符合条件,跳转页面。
res.sendRedirect("http://localhost:8080/error.html");}
请求转发的方法:(参考例6.6)
{String url = "/EShop.jsp";
ServletContext sc = getServletContext();
RequestDispatcher rd = sc.getRequestDispatcher(url);
rd.forward(req, res);}
上面{……..}等价于
{request.getRequestDispatcher(“url”).forward(req,res);}
两个方法的区别:
页面跳转是两次请求,而请求转发是在一个请求之内。
页面跳转在地址栏中看到的是第二次请求的页面地址,而请求转发在请求之后地址栏中仍然是第一次请求的页面地址。
14、创建Cookies、获取Cookies的代码设计。
创建Cookies:
<%
Cookie user=new Cookie(“login-user”,”value”);创建一个Cookie并设置名称和值。
response.addCookie(user);将Cookie传送到客户端。
%>
获取Cookie:
<%Cookie[ ] cookies=request.getCookies();
String value=null;
for(int i=0;i<cookies.length;i++){
Cookie cookie=cookies[i];
if(“login-user”.equals(cookie.getName())){
value=cookie.getValue();
break;
}}%>
15、JavaBean一般需要符合哪些条件?
JavaBean是符合一定条件的Java类的实例。
使用JavaBean的最大好处之一就是可以实现代码的复用。
这些类具有如下的特点:
是一个public类,可供其他类实例化。
类中如果有构造方法,那么构造方法也是public的并且是无参数
的。
类的每个成员变量都需要定义getXxx()方法和setXxx()方法。
16、JavaBean中的属性可以分为哪四类?各自的特点?
简单属性,是具有非集合类的一种属性。
索引属性,一个索引属性表示这个属性为数组。
绑定属性,一个绑定属性是指当该属性发生变化时,监听器将
监听到该变化,并将该变化所触发的事件发送给其他相关的
Bean。
约束属性,绑定属性类似,但是属性值的变化首先要被所有的
监听器验证之后,属性值才有可能真正发生变化。
17、不同作用范围的JavaBean的生命周期有何不同?(了解)
<jsp:useBean>动作中scope属性值有四个,它们限定了Bean的有效范围。
该属性可以有四种选项:page、request、session和application。
默认是page,即Bean在当前页有效(存储PageContext的当前页)。
设为request表明Bean只对当前用户的请求范围内(存储在ServletRequest对象中)有效。
设为session则表明该Bean在当前HttpSession生命周期的范围内对所有页面均有效。
最后,设为application表明可以设置所有的页面都使用相同的ServletContext。
18、servlet的生命周期。
整个生命周期可以分成四个阶段:
加载阶段。
当Web服务器启动时,Servlet容器加载一个Java
Servlet类,这个过程也有可能推迟到Web客户请求Servlet服务时
发生。
初始化阶段。
Servlet容器调用Servlet的初始化方法
HttpServlet.init()进行Servlet初始化。
Servlet运行阶段。
当Web服务器接受到浏览器的访问请求后,将
把该请求传送给Servlet容器。
Servlet容器将请求包装成
HttpServletRequest和HttpServletResponse对象,调用service()方
法。
Servlet结束时期。
Servlet将一直运行到被服务器卸载,或者当
Web服务器和容器关闭时。
通过调用destrory()方法来释放资
源。
20、简述MVC模型(又称为JSP模型2)。
模式思想:由JSP充当View的角色,负责在预定义的页面模板中显示动态内容,由Servlet充当Controller的角色,负责对大量的客户端请求进行处理及调用各类JavaBean,由JavaBean充当Model角色,负责提供可复用组件以及对数据库的访问等。
21、给默认的Servlet程序设置映射,存放于Tomcat安装目录中的
\webapps\ROOT\
WEB-INF\web.xml文件中。
映射代码例如:
<servlet>
<servlet-name>“任意符合java规范的字符串”</servlet-name>
<servlet-class>HelloBUAASem108(package.class)</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>“任意符合java规范的字符串”</servlet-name>
<url-pattern>“任意url代码”</url-pattern>
</servlet-mapping>(注:句和句代码必须相同。
)
22、JDBC的四种驱动类型及区别。
JDBC-ODBC桥。
通过这个驱动,可以将JDBC对数据库的操作
映射为ODBC对于数据库的操作。
JDBC Native桥。
也叫做本地API桥方式。
这种方式把标准的
JDBC调用直接转化为对客户机上各数据库API的调用。
JDBC Network驱动。
这种驱动程序将JDBC的操作指令转换为驱
动程序厂商自己定义的网络协议,该网络协议是与DBMS无
关。
纯Java的本地JDBC驱动。
这种驱动将JDBC对数据库的操作直接
转换为针对某种数据库进行操作的本地协议。
23、JSP中处理汉字的两种方法。
<% request.setCharacterEncoding(“GB2312”);
…………. %>
<% String user=request.getParameter(“username”);
……….
String s=newString(user.getBytes(“GB2312”)); %>
24、使用SAX和DOM解析文件的比较。
SAX DOM
顺序读入文档并产生相应
在内存中创建文档树,不
事件,可以处理任何大小的
XML文档
适于处理大型XML文档。
只能对文档按顺序解析一遍,不支持对文档的随意访问。
可以随意访问文档树的任何部分,没有次数限制。
只能读取XML文档内容,而不能修改。
可以随意修改文档树,从而修改XML文档。
开发上比较复杂,需要自
己来实现事件处理器。
易于理解,易于开发。
对开发人员而言更灵活,可以用SAX创建自己的XML 对象模型。
会自动生成DOM规范的文档树。
25、通过单例模型实现访问数据库的类。
(给定驱动程序和url,写出连接数据库的方法)
import java.sql.*;
public class databasetool {
private static databasetool instance=null; 设置私有静态属性。
private databasetool(){ } 构造方法。
public static databasetool getInstance(){
if(null==instance){instance=new databasetool();}
return instance;
}单例模型实现。
public Connection getConnection(){连接数据库的方法。
try{
Class.forName("sun.jdcb.odbc.JdbcOdbcDriver");
String url="jdbc:odbc:test";
String user="ABC";
String pwd="123";
return DriverManager.getConnection(url,user,pwd);
}
catch(Exception e){return null;}
}}
26、利用JavaBean实现数据库的封装。
Page 129,例7.3。
public int updateData(Connection con, String sSQL){}
public ResultSet queryData(Connection con, String sSQL){}
基于JavaBean的购物车的代码实现。
Page 83, 章节5.4。
(理解代码)
基于Servlet的购物车的代码实现。
Page 104, 章节6.8。
(理解代码)
Page 146 ,例8.3。
Page 87 ,章节5.4.2。
Page 121,章节7.4。
数据库操作实例。
绑定属性核心代码理解。
Page 66,例5.2和例5.3。
(第三章、第四章除需要掌握的内容之外全部了解。
)。