第一篇:java web总结
Java Web 总结
1.JSP运行原理
(1)用户通过客户端浏览器向服务器发送请求。
(2)JSP文件将JSP引擎编译成Java的class文件,即servlet。
(3)将产生的servlet加载到内存执行。
(4)Servlet的运行结果以HTML(或XML)形式通过web服务器返回客户端的浏览器。
2.web项目设计
(1)公开目录(2)web_INF目录(3)Class目录
3.JSP的基本语法
(1)脚本元素:声明、脚本段、表达式。
(2)脚本段:<%%>
(3)声明:<%!%>不会产生任何输出内容→声明全局变量。
(4)表达式:<%= %>
(5)EL表达式:${ }
(6)指令元素:<% @ %>不在客户端可见
(7)page指令、include指令、taglib指令
page指令:language属性、contentType(text/html)、text/plain application/msword、application/x-msexecl、PageEncoding、info、import属性.include指令:在JSP页面中静态包含一个文件 <@include file=“"%>taglib指令: <%@taglib uri=”标记库的uri地址“ prefix=”前缀名“%> 指令元素翻译阶段执行,动作元素执行阶段被执行。
用
考点:
4.指令与动作的区别(include)
1.执行时间不同
指令<%@ include file=” “%>是偏译时包含静态文件
动作
2.引入内容不同
指令<%@include file=”relatirveURI“%>引入静态文本(html.jsp)。
动作
5.JSP内置对象
Out,request,response,session,application,page,pageContext,exception,config
request客户端向服务端发送请求。
response用于服务器端封装JSP处理请求后产生的结果。
response对象的send Redirect(url)方法相当于两次请求。
而
6.session和cookie的区别
1.存放地点不同
Session存放在服务器端,cookie存放在客户端的硬盘里
2.存活时间
session随用户访问服务器而产生,随客户下线或超时而消失
3.安全性
session存放在服务器端,不能被修改,且随客户端浏览器的关闭而消失,安全性较好。Cookie存放在客户端,安全性较差。
7.数据库
java.sql.Driver
java.sql.DriverManager——加载驱动程序
java.sql.Connetion——表示数据库连接对象,对数据库一切操作都在这个基础上
java.sql.Statement——执行SQL语句和返回结果
java.sql.ResultSet——结果集用来暂时存放数据库查询操作结果
8.编写程序的步骤
1.装载驱动程序
class.forName(”com.mySQL.jdbc.Driver“)
2.定义所需连接数据库的地址
String mysqlURL=”jdbc.mysql://host:port/dbName“
3.建立与数据库的连接
Connection conn=DriverMannager.get Connection(url,”登录数据库用户名“,”
密码“)
4.声明并执行SQL语句
5.处理返回的结果
6.关闭对象
String driverStr=”com.mysql.jdbc.Driver“
String connstr=”jdbc:mysql://localhost:3306/book“;
Class forName(driver Str)
Connection conn=DriverManager.getConnection(connstr.”root“.”123“)第4步:建立语句对象
Statement stmt=conn.createStatement()
第5步:声明并执行SQL语句
String sql=”select*from book“;
ResultSet rs=stmt.executeQuery(sql);
第6步:
Statement接口的3个方法:
1、ResultSet executeQuery(String sql)
2、int execute Update(String sql)
3、boolean execute(String sql)
ResultSet的方法:
1、boolean next()
2、get xxx()
第7歩:rs.close()stmt.close()con.close()
注:关闭资源的顺序与打开资源顺序恰好相反。
第8步:异常处理
try{.........}catch(SQLExecption ex){.........}
9.Java Bean 组件(可重用)
组件:是一个独立的模块,外界可以不了解内部如何实现,只需通过其提供的接口对组件进行访问即可,组件可重用。
特点:
1、实现代码重复使用;
2、易编写,易维护,易使用。
10.Java Bean类的编码约定
1、类实现了java.io.Serializable接口
2、必须放在某个Package(包)中
3、类中如果有构造方法,那么这个方法是共有的,并且无参数
4、所有属性都是私有的(private修饰)
5、get XXX:用来获取属性,此方法是共有的6、set XXX:用来设置属性,此方法是共有的7、对于boolean类型的成员变量允许使用“is”代替“get”和“set”
8、类中的普通方法不适合上面的命名规则,但这个方法必是public的。
3个标记:
11.servlet的生命周期
(1)当客户第一次请求servlet时,servlet被加载到内存 容器会创建servlet实例,并调用其init()方法进行初始化工作。
(2)容器创建请求对象,然后调用servlet的service()方法为客户提供服务。
(3)当servlet不再被需求时,容器调用servlet的destory()方法将servlet实例销毁。
12.Servlet开发
引入import.javax.servlet.* 和import.javax,servlet.http.*包
13.Servlet过滤器
Servlet过滤器是一种java组件,它位于客户端和处理程序之间
Servlet过滤器工作原理
14.Model1和model2
Model1:JSP+JavaBean
Model2:JSP+Servlet+JavaBean
Model1中,jsp页面实现页面显示、业务逻辑和流程控制,数据处理由JavaBean完成。
优点:进行快速和小规模的应用开发时优势非常明显。
缺点:不利于web应用的扩展和更新;调试和排错困难。
Model2中,MVC模式--->模型-视图-控制器.即把web应用的输入输出和处理流程按照Model.View和Controller分成三层。
Model1和Model2的区别:
Model1和Model2实际上就是对采用JSP技术开发的web应用的不同模型的描述。Model1采用JSP+JavaBean技术开发web应用,它比较适合小规模应用的开发,效率较高,易于实现,但由于在JSP页面中内嵌了大量的Java代码,以至于当业务逻辑复杂时,代码可维护性、可扩展性和可重用性就会下降;Model2采用JSP+Servlet+JavaBean技术开发web应用,该模型基于MVC模式,完全实现了页面显示和逻辑的分离,它充分利用了JSP和Servlet两种技术的优点,JSP更适合前台页面的开发,而Servlet更擅长服务器端程序的编写,Model2分工明确,更适合大型项目的开发和管理。
视图(view)用于与用户交互,可以用HTML.JSP实现。
15.模型(model)用于表示业务数据和实现业务逻辑,可以用JavaBean实现 控制器(controller)完成流程控制,它接收来自视图层用户输入的数据,并调用相应的模型进行处理,最后选择合适的视图去响应用户。控制层可以用Servlet实现。
优点:MVC模式完全实现了页面表示和业务逻辑的分离;
MVC优势之一在于三层各司其职,互不干涉。
缺点:没有明确的定义。
模型层为JavaBean,实现了数据的表示和业务逻辑,视图层为JSP页面,只负责显示功能。
控制器为Servlet,负责接收用户的请求,设置JavaBean属性,调用JavaBean完成业务处理,最后将处理结果交给JSP页面显示。
16.自定义标签
对隐式对象的操作、处理表单、访问数据库及其他企业级服务。
自定义标签种类:
1.不带有属性和标签体:
2.带有属性没有标签体的标签:
3.带有属性带有标签体:
17.EL表达式
基本语法${expr}
功能:对属性对象的简明访问:${user}
对属性对象的属性访问:${customer.firstname}
对属性集合元素的访问:对数组和list:${variable[index]}对map:${variable[key]}
对请求参数cookie等的简单访问.请求参数${param.custID}
Cookie对象:${cookie.userCookie}
18.”.“操作符和”[ ]“操作符
${user.address}=${user[address]}
访问数组和集合元素,需使用[ ]
${class[0].name}=${class[0][name]}
${param.username}={%=request.getparameter(”userName“)%}
19.”.“与”[ ]“使用存在差异
1.当访问的数据中包含一个特殊字符(如:”.“或”_“时),就必须用”[ ]“操作符
2.当动态取值时必须使用”[ ]“操作符,”.“操作符只能取到静态的值
注:当”[ ]"操作符中的属性名为常量时必须用''''引起,否则将会当做变量来处理.20.SQL标签
1.
2.
3.
4.
5.
21.Tomcat的目录结构及描述:
bin放置启动和关闭Tomcat的可执行文件和批处理文件
common放置在此目录中的jar、class文件,可以被此服务器下所有的web应用使用
conf放置Tomcat的主要配置文件
logs放置Tomcat的日志文件
server放置Tomcat管理接口的应用
src放置Tomcat相关的源代码
temp放置Tomcat临时文件
webapps 放置Tomcat应用的目录
work放置JSP页面翻译成对应的Servlet类的目录
第二篇:javaWeb总结+小结
JavaWeb B/S与C/S的区别
1,从安装上来讲,B/S只需要在服务器端安装即可,而C/S却需要每一个客户端进行安装。2,从部署上来说,B/S只需要服务器能够支持即可,而C/S却对每一个客户端的电脑提出了要求。
3,从升级,维护角度来说,B/S只需要在服务器端升级维护即可,像网易的邮箱,而C/S却是服务器更新维护一次,客户端就要下载相关的补丁才能使用 4,从安全性来讲,B/S是基于服务器的,较之C/S安全性好
5,从本质上来说,B/S是基于请求驱动的,即客户端发送一个Http请求,然后服务器进行处理之后,响应给客户端,而C/S却是基于事件驱动的,像腾讯的QQ。
6,从耦合度来讲,B/S与服务器端耦合,而C/S却是与客户端的操作系统进行耦合。但是Client/Server(从游戏的角度来讲)较之Brows/Server具有优质的画面。
Servlet的使用步骤:
1,创建一个JAVA类,存放在com.fit.servlet包中,并且此类extends HttpServlet类,才能成为一个Servlet 2,覆写doGet()和doPost()方法
3,最后,在web.xml文件中进行Servlet配置。具体的配置如下:
就是指Servlet从创建出实例对象到销毁的过程。它是一个容器,负责创建实例来接受客户端的请求,并且以多线程的方式响应给客户。具体过程如下:
Servlet被服务器实例化之后,容器运行其init方法进行初始化,请求到达时运行其service方法,在此过程中仅创建一个对象,然后service方法自动调用与请求相应的doXxx方法,当服务器决定将实例进行销毁时,再调用其destroy方法。
与CGI(通用网关接口)的区别在于,Servlet处于服务器进程中,它通过多线程的方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每一个请求都产生新的进程,服务完成后就销毁,所以效率低于Servlet 作用:可以用来进行接收客户端的请求,也可以进行请求流的控制。
Http协议:(了解)
首先它是(Hypertext Transfer Protocol)超文本传输协议。
HTTP报文由从客户机到服务器的请求和从服务器到客户机的响应构成。请求报文格式如下:
请求行 - 通用信息头 - 请求头 - 实体头 - 报文主体
请求行以方法字段开始,后面分别是 URL 字段和 HTTP 协议版本字段,并以 CRLF 结尾。
应答报文格式如下:
状态行 - 通用信息头 - 响应头 - 实体头 - 报文主体
状态码元由3位数字组成,表示请求是否被理解或被满足。原因分析是对原文的状态码作简短的描述,状态码用来支持自动操作,而原因分析用来供用户使用。客户机无需用来检查或显示语法。工作流程:
一次HTTP操作称为一个事务,其工作过程可分为四步:
首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作就开始了。
建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客 户机与服务器断开连接。
Javascript的作用:
1,进行验证(通过正则表达式,在css+HTML的部分特性进行浏览器端的格式验证工作)
2,进行交互(将客户端的一个请求通过JavaScript可以发送到服务器端,也可以在浏览器端进行人机的交互,突破了以前静态页面的交互性限制)3,进行特效的处理,如走马灯,时间时钟。
Servlet生命周期:(详细)是指Servlet实例从被创建到其消失(对象销毁,回收)中间的时间及各个阶段,称之为Servlet生命周期。
前提:web服务器加载类。之后执行以下过程:
1,实例化:Servlet容器创建Servlet实例,具体就是当接收到客户端的第一次请求时,Servlet容器负责创建Servlet的一个实例。且在此过程中仅创建一个实例,通过多线程的方式响应客户端的请求
2,初始化:该容器调用init()方法。
3,服务:当请求到达时,该Servlet容器自动调用server()方法,根据客户端发送请求的方式,选择doXxx()方法执行
4,销毁:当web服务器被卸载的时候,调用destroy()方法进行对象的销毁。请看以下的一段代码: package com.fit.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class Test extends HttpServlet { private static final long serialVersionUID = 1L;
public Test(){
super();
System.out.println(“===========================”);
} public void destroy(){
System.out.println(“对象被销毁!”);} public void init()throws ServletException {
System.out.println(“对象初始化!”);} protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
System.out.println(“get方法执行”);} protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
this.doGet(request, response);} protected void service(HttpServletRequest arg0, HttpServletResponse arg1)
throws ServletException, IOException {
System.out.println(“服务开始启动了!”);
super.service(arg0, arg1);}
}运行效果如下:
=========================== 对象初始化!服务开始启动了!
get方法执行
2011-7-19 12:07:04 org.apache.catalina.core.StandardContext reload 信息: Reloading this Context has started 对象被销毁!
分析原因:
1,实例化对象发生在客户端请求第一次到达的时候,而不是类被加载的时候。2,对象只被实例化一次.3,如果service()被覆写的话,则调用的时候加入super.service(arg0, arg1);这句话时候才可以清楚的调用的doXxx()方法,如果不加入此句话,那么将不会执行doGet()方法。所以一般不要覆写service()方法。只需要覆写doGet()和doPost()方法。
4,当web服务器被卸载的时候,将执行destroy()方法。进行对象的销毁!
Jsp页面构成元素,Jsp跟Html的区别,优势
Jsp定义:(Java Server Page)Java服务器端语言,组成如下: 1,静态模板:由HTML,css,JavaScript等元素构成。
2,指令:设定网页元素的属性,用于提供这个歌JSP网页的相关信息。
3,脚本元素--声明:<%!...%>,在此之中可以进行变量,常量的定义,类,方法都可以声明,但是一般不用。
4,脚本元素--Java脚本:<%...%>,在此期间可以进行Java代码的拼写。5,脚本元素--表达式:<%=..%>,用于表达式输出时使用。
6,动作:利用JSP动作可以重用JavaBean组件,可以动态的包含页面,也可以进行服务器端的跳转(即将用户的请求转发给其他的页面)。7,注释:
--HTML注释:,此种注释可以在页面中看到,成为客户端注释。--Jsp注释:<%----%>,此种注释在页面中看不到,也成为服务器端注释。--Java注释:
单行注释:// 多行注释:/*„„„*/ Jsp优点:使用HTML,CSS等技术构建页面的模板部分,用Java语言根据用户的输入动态生成可变的内容部分。既可以实现HTML控制页面布局,也亦可以实现Servlet的功能,实现了内容与表示分离。Jsp的常见指令,并说出静态包含和动态包含的区别
Page指令:<%@ page language=”java” import=” 完整的包.类名称” autoFlush=”true[false]” errorPage=”文件名” isErrorPage=”false[true]” isThreadSafe(设置是否能多线程使用)contentType=”text/html;charset=ISO-8859-1” %> 包含指令:<%@ include file=”文件名”%> taglib指令:此指令用于在Jsp页面中引入用户自定义的标签库。例如: <@% taglib url=http://java.sun.com/jsp/jstl/core prefix=”c”%> 静态包含跟动态包含的区别:
<%@ include file=”文件名%>,此包含属于静态包含,是指先将文件包含进来然后在进行编译,编译后生成的class文件中,被包含的文件在静态块中。且此种包含不允许带参数。
Jsp常见的动作,调用JavaBean相关:
输入/输出对象
request:表示客户端对网页的请求
response:用于处理Jsp生成的响应,使用Http协议将响应发送给客户端。
out:表示从response中取得的输出流。常用的方法有write(),print(),println()等,用于在页面中输出文本形式的响应内容 作用域通信对象
pageContext:此通信对象的作用域仅在当前页面有效,一旦跳转则不可用
request:此通信对象的作用域针对的同一个客户的请求,如果不是同一个请求则不可以使用
session:此通信对象的作用域适用于一次会话,即打开的同一个浏览器的所有页面都可以适用
application:此通信对象的作用域适用于基于WEB服务器的所有会话,适用于监听器 Servlet对象
page:指向当前Jsp页面经过转译(jsp.java文件),编译(.java文件.class文件)后的对象本身,即编译后的Servlet对象本身
config:是在一个Servlet初始化时,服务器向它传递的初始化信息。初始化信息可以在web.xml中找到。错误对象
execption:表示Jsp页面运行时抛出的异常对象,可以在专门准备的错误处理页面中访问这个异常对象。
Jsp执行过程:
jsp文件转译:当客户端请求一个正确的Jsp文件时,将Jsp—>.java文件(即将Jsp文件翻译成相应的Servlet类的源文件)编译:.java文件.class文件,即将Servlet类的源文件进行编译成为.class的Servlet文件。调用Servlet的service()方法响应用户的请求。
描述Jsp和Servlet的区别,共同点,各自的应用范围:
1,从发展上来看,Jsp可以避开Servlet的输出页面的繁琐步骤,它集合了HTML和Servlet的优点。
2,从本质上来说,Jsp是Servlet的扩展,它是Servlet的简易形式。Jsp经过转译之后就成为了类Servlet。
3,从创建方式上来说:Jsp由HTML代码和JSP标签构成,而Servlet则完全是由程序代码构成擅长于流程控制和事务处理的类
4,从使用角度来说:在MVC中,Jsp担任的是VIEW层,侧重于视图,而Servlet则充当的控制层,侧重于控制逻辑。请求转发和重定向
response.sendRedirect():利用response对象向客户端发回一个响应指示其访问其他URL资源,或者说是一个web组件向另一个web组件发送一个新的请求,属于重定向,地址栏有变化。且不可以传递属性request参数,当所有的代码执行完之后才进行重定向。
request.getRequestDispatcher().forword(req,resp):web组件将一个请求转发给另一个web组件,他们始终是同一个请求,在此期间可以传递request属性参数,地址栏没有变化。且一执行到此代码处,后边的将不再执行
JavaBean的组成:
类必须是具体的,公共的。提供无参数的构造方法
提供getter()和setter()方法访问它的属性。版权所有@杨肖飞yangxf159371@126.com
第三篇:javaweb课程设计
课程设计:基于Java Web的讨论区BBS系统的设计与实现
本系统要求实现以下主要功能:
(1)登录:提供用户登录系统的功能,需要输入用户名和密码
(2)注册:提供用户注册的功能,需要输入用户名、密码、密码确认、Email、QQ
(3)修改注册信息:提供用户修改注册信息的功能,可以修改密码、Email、QQ
(4)浏览讨论区:用户登录后就可以浏览系统中已存在的讨论区,用户可以查看某讨论
区的详细信息,也可以进入该讨论区浏览已发表的帖子,以及回帖
(5)创建讨论区:用户可以创建讨论区,每个讨论区包含一个名称和顺序号,每个讨论
区的名称在系统中是唯一的,顺序号表示讨论区在列表中的排序
(6)修改讨论区:提供讨论区名称和顺序号的修改功能
(7)删除讨论区:提供讨论区删除的功能,方便管理员进行讨论区管理
(8)浏览帖子:用户进入一个讨论区后,可以看到帖子列表,包含帖子主题、作者、创
建时间、回复次数,点击一个帖子,可以查看该帖子的内容和回帖
(9)创建帖子:用户进入一个讨论区后,可以选择创建一个新帖子,需要输入帖子标题
和内容
(10)修改帖子:提供给管理员使用,修改帖子标题和内容
(11)删除帖子:提供给管理员使用,方便管理员进行帖子整理
(12)回复帖子:用户在浏览帖子信息的时候,可以进行回复
第四篇:javaweb学习心得
学习心得
在写心得之前总结下中级部分学习的内容,我们的中级部分主要学习了html,css,javacript,xml,dtd/scheam,以及java ee 中的jsp,servlet,过滤器,监听器,JSTL,EL,jQuery,Ajax。
下面就各个模块进行总结:在学习html时,我是对这个没太在意的,因为里面全部是标签,没有需要理解的内容,全部是属于识记的,所以在学习时相对轻松,对于html常用的标签都是非常清楚的form中的十一种类型,常用的有text,password,hidden,submit,button,radio,checkbox,等其他的标签如div,table,span,select都是重要的标签.Css的学习:虽然说在标签中也可以定义样式,但是这么做看起来不是那么明智,我在学CSS时还是比较努力的,所有的样式效果都测试过,并且写了相应的案例,只是过了不到3个月就忘了一大半,很多时候都是查文档才能写出来的,虽然CSS对于我们来说不必要非常精通,但是我觉得掌握的东西越多,以后的工作就越轻松,所以在中级结束后也会去看看前面的笔记和案例。
Javascript:js 我认为是最重要的,甚至于超过servlet,jsp,在上课期间,讲的内容还是比较少的,就javascript中创建对象来说吧,应该只讲过3中方法,虽然在一般的情况下是用不上的,但是我觉得还是有必要学习的,这样有助于看懂别人写的框架,在javascript这部分学习中讲的最多的还是dom操作,不过我觉得用dom操作太繁琐了,写的代码太多,而且效率看起来也不高,后面就是讲的事件,事件也算是简单的,只是对触发的事件进行相应的响应。除了这些就是javascript流程控制,对象一些基本语法,这些和java类似,所以在上课时没有讲得太多。
Xml: Markup Language可扩展标记语言。它是由SGML(Standard Gerneralized Markup language)发展而来的,允许开发者自定标签,可以将标签和内容有效的分离。在XML技术里,可以编写一个文档来约束XML文档的书写规范,称之为XML约束。本文主要介绍DTD与Schema两种约束,在这里学习了dtd,scheama,定义XML约束,这部分的学习是我感觉最累的一部分,DTD还算好,SCheama里面的内容,现在都忘了,没有任何记忆,只知道在XML约束中有着两中方式,还好这些在刚开始工作时是用不上的,因此我也没有用很多时间来学习。
Servlet:我觉得是比较简单的,可能是因为它是java代码,容易理解。首先讲的是开发环境的配置,安装tomcat,了解tomcat下的目录,以及web工程下的目录。后来是讲了servlet的访问方式,post和get的区别,处理中文乱码是servlet中一个重要的知识点,几乎每个项目都会遇到这个问题。主要乱码有get,post乱码,是通过设置request或者response的编码方式来实现的。Servlet间的跳转方式有重定向和转发,对于重定向和转发的区别,现在理解的很透彻了,重定向是不能获取request中参数,是客户端的两次请求,而转发是服务器内部跳转,不过,两种在设置过滤器的情况下,都要通过过滤器才能跳转。Servlet的生命周期是笔试的必考题,其实这是很简单的,只需要理解,没必要死记硬背的,session算是重要的知识点,很多数据都是存储在内存中,如购物车,用户信息等,还可以对session设置生存时间。说到session就必须说说四种会话跟踪技术,cookie,URL重写,表单域隐藏和session。
JSP:JSP实际上和servlet是一样的,只不过两者侧重点不同,JSP的内置对象和作用域大致是一样的,JSP中还有动作,常用的有操作JavaBean的动作,页面跳转的动作,以及包含的动作。这里重点提到两种包含的区别。在JSP还讲过jstl和EL表达式,都是基础的应用,不过写自定义的标签还是要有一定的java基础的,我开始不太理解标签的解析过程,后来看了几个例子,发现自定义的已不是那么难。
jQuery:jQuery可以说是中级部分学的最好的,主要是它方便了,特别是选择器,而且避免了一些浏览器的差异,所以在学习jQuery后,就再也不想用javascript来获取元素了。不仅如此,jQuery中封装的Ajax操作也是非常简单,不需要自己封装一个类,$.get和$.post 能够省去很多麻烦,jQuery的监听事件也是很简单,不需要在标签中添加对应事件,可以动态的绑定事件。还有就是dom操作更是方便。我在学习完Ajax,json后就发现,即使是没有JSP,也能做出一个动态页面出来,只是会存在效率问题。
总结:虽然说这上面的知识大部分都掌握了,但是能否灵活运用才是重点,所以在今后的学习中多思考问题是否有多种解决方法。
第五篇:Javaweb期末试卷总结版2
Java Web试题 JAVA WEB部分: 1.基于HTTP协议的Servlet通常继承__C______, 也可以继承__B______。这些类型都实现了接口___A_____。
A.javax.servlet.Servlet
B.javax.servlet.GenericServlet C.javax.servlet.http.HttpServlet 2.我们实现的基于HTTP协议的Servlet的服务方法签名正确的有__
BCD_____________。
A.public void doGet(ServletRequest req, ServletResponse res)throws IOException, ServletException B.public void doPost(HttpServletRequest req, HttpServletResponse res)throws IOException, ServletException C.public void service(HttpServletRequest req, HttpServletResponse res)throws IOException, ServletException D.public void service(ServletRequest req, ServletResponse res)throws IOException, ServletException
重写服务方法,一般是以下两种方式: doGet(HttpServletRequest req,HttpServletResponse res)doPost(HttpServletRequest req,HttpServletResqonse res)
HttpServlet继承自GenericServlet,其中的service方法自动实现; GenericServlet的调用方法: 容器
-->service(ServletRequest req,ServletResponse res)-->service(HttpServletRequest req,HttpServletResponse res)-->METHOD=“GET”-->doGet(HttpServletRequest req,HttpServletResponse res)-->METHOD=“POST”-->doPost(HttpServletRequest req,HttpServletResponse res)
API中有D这个方法
3.在Servlet中要输出内容,使用HttpServletResponse的方法_setContentType 设置内容,对于文本类型调用方法__ getWriter _获得一个___ PrintWriter ___的输出流,对于二进制类型调用_ getOutputStream 获得_ ServeltOutputStream _的输出流。调用HttpServletRequest的方法_ getParameter 解析有名参数,调用_ getInputStream 获得一个_ ServletInputStream _的输入流。在Servlet中也可以调用_ ServletContext 和_ HttpServletRequest _的方法_ getRequestDispatcher __获得__ RequestDispatcher __, 将请求的处理权交给一个新的资源。A.ServletInputStream
B.ServletContext
C.HttpServletRequest D.setContentType
E.getInputStream
F.getOutputStream G.getRequestDispatcher H.RequestDispatcher
I.getParameter J.ServeltOutputStream K.getWriter
L.PrintWriter
4.控制一个Servlet的生命周期的方法有__C______, _____B___和____A____。其中 ___C_____在所有的请求到来之前调用,____A____在撤消应用或关闭web container时调用。Servlet通常只有一个实例,被所有的访问者共享,因此要注意资源的同步。A.destroy
B.service
C.init 5.以下是部署在主机”%> C.
D.
E.<% int i = 10;%>
F.<%!int i = 10;%> G.< %@taglib uri=”http://java.sun.com/jstl/core” prefix=”c”%> H.<%=new java.util.Date()%> I.
11.在directive page中,__B______属性可反复出现,___AC_____属性的却省值为true, ____E____属性的值指向处理异常的页面,______D__表示激活EL。A.autoFlush
B.import
C.session D.isELIgnored=false
E.errorPage
jsp的page指令(directive)
jsp的page指令(directive)影响着由JSP页面生成的Servlet的整体结构!page指令的功能包括(1)类的导入(2)Servlet父类的制定(3)内容类型的设置(4)页面会话的设置(5)页面缓冲的设置
(6)错误页面的设置(7)控制线程行为
page属性(attribute)值的两边的双引号也可以用单引号代替,单引号不能省略,若属性值本身含有引号,则在它们之前加上反斜杠来转义。
page 的几个重要的指令:1.import 唯一的一个允许多次出现的attirbute.默认情况下有以下几个是自动导入的包,java.lang.*;java.servelt.*;javax.servlet.jsp.*;javax.servlet.http.*!2.pageEncoding用来单独设置页面的字符集。%@page pageEncoding=“GB2312”% 3.contentType设置响应报头标明发送到客户端的MIME类型和页面字符集!<%@ page contentType=“text/html;charset=gb2312”%> 4.session 属性控制页面的会话特性!%@page session=“true|false”%
默认值为true.5.buffer 和 autoFlush 属性
buffer 设置缓冲区的大小 <%@ page buffer=“sizekb|none”%>
autoFlush 当缓冲区满后自动清空!%@page autoFlush=“true|false”% 默认值为true,为false时会抛出一个异常。
6.errorPage 和isErrorPage(attribute)<%@page errorPage=“RelativeURL ”%>指定一个页面处理当前页面抛出但未捕获的异常对象。
%@page isErrorPage=“true|false”% 表明当前页面是否可以作为其他jsp页面的错误页面。可以将此页面放在WEB-INF目录中,有助于提高程序的安全性。
1、<%@ page buffer=“25kb” autoFlush=“true” %>
2、buffer=“none | 8kb | sizekb” buffer的大小被out对象用于处理执行后的JSP对客户浏览器的输出。缺省值是8kb
3、autoFlush=“true | false” 设置如果buffer溢出,是否需要强制输出,如果其值被定义为true(缺省值),输出正常,如果它被设置为false,如果这个buffer溢出,就会导致一个意外错误的发生.如果你把buffer设置为none,那么你就不能把autoFlush设置为false.12.有一个JavaBean com.briup.Student, 在JSP中用action在session作用域里创建一个对象hellen的语句是___
什么是JavaBean?(参见文档)
13.以下_ABCD_______是JSP中正确的注释:
A.<%--comments--%> 真正的注释
B.<% //comments %> C. 会写在页面当中
D.<%!/* comments */ %> JAVA中的单行和多行注释
14.以下__AB______是错误的:
A.<%!int i = 10;int j = 10;i += j;%> B.<% int getHash(String str){ return str.hashCode();} %> 声明脚本 C.<%!class A { void print(){System.out.println(“in A”);}} %> 15.在JSP中有很多隐含变量,request的类型是C_javax.servlet.http.HttpServletRequest______, response的类型是_I__javax.servlet.http.HttpServletResponse__, page的类型是__E__javax.servelet.jsp.JspPage_,pageContext的类型是__B__javax.servlet.jsp.PageContext____, session的类型是_D__javax.servlet.http.HttpSession_____, application的类型是____G__ javax.servlet.ServletContext__, config的类型是__F_javax.servlet.ServletConfig_, out的类型是_H__ javax.servlet.jsp.JspWriter_____, exception的类型是___A__java.lang.Throwable___。A.java.lang.Throwable
B.javax.servlet.jsp.PageContext C.javax.servlet.http.HttpServletRequest
D.javax.servlet.http.HttpSession E.javax.servelet.jsp.JspPage
F.javax.servlet.ServletConfig G.javax.servlet.ServletContext H.javax.servlet.jsp.JspWriter I.javax.servlet.http.HttpServletResponse
参见PDF97页
16.JSP在处理客户请求前会被编译成servlet, JSP中declaration中定义的变量和方法在运行时成为对应servlet的___B_____变量和方法;scripting会成为服务方法____C____的语句。JSP的生命周期受到____A____,___C_____和___D_____的控制。A.jspInit
B.member
C._jspService
D.jspDestroy
调出一个编译后的JSP文件给学生看
D:JAVATomcat-5.5.25workCatalinalocalhostRunCommunityorgapachejsppages
17.在web应用webdev的WEB-INF的目录下有一个标签库描述文件sample.tld, 其内容部分如下:
在hello.jsp中要使用标签hello, 因此必须先引入该标签库,语句是__<%@taglib uri=”/WEB-INF/sample.tld” prefix=”s”%>_____。要用hello标签在页面上给”world“打招呼的语句是___
18.在web应用webdev的WEB-INF/tags目录下放置了一些标签文件,用前缀”me”引入这些标签到一个jsp的 directive taglib的表达式是___<%@taglib tagdir=”/WEB-INF/tags” prefix=”me”%>__。
19.一个没有body的标签其tag handler要实现接口__C______;如果某个标签有body, 但标签不与body交互,tag handler要实现接口___E_____, 如果要与body交互,tag handler要实现接口____D____。通常前两种情况的tag handler会继承___A_____, 最后一种情况tag handler会继承_____B___。
A.javax.servlet.jsp.tagext.TagSupport B.javax.servlet.jsp.tagext.BodyTagSupport C.javax.servlet.jsp.tagext.Tag D.javax.servlet.jsp.tagext.BodyTag E.javax.servlet.jsp.tagext.IterationTag 20.在EL中以下____B____可以获得requestURI:
A.${requestScope.request.requestURI} B.${pageContext.request.requestURI} C.${requestScope.requestURI} 21.EL中可使用一些隐含对象,通过____C____可以访问request中的属性(attriubte), 通过___A_____可以访问session中的属性, 通过___B_____可以访问application中的属性, 通过___D_____可以访问浏览器输入的参数,通过____G____可以访问请求头中的参数,通过____E____可以访问web应用的参数,通过____F____可以访问cookie。A.sessionScope
B.applicationScope
C.requestScope D.param
E.initParam
F.cookie G.header 22.在EL中能够访问的函数(function)必须是_____A___。
A.public static
B.protected
C.protected static D.public static void
F.protected static void 23.在EL中访问JavaBean Student的对象smallTank的属性name正确的是__ABC______。A.${smallTank.name}
B.${smallTank[„name‟]} C.${smallTank[“name”]}
D.${smallTank(„name‟)}
SESSION AAA=”aa”
APPLICATION(aa=”hhhh”)
applicationScope['aa'] 此种情况只能用方括号
24.Struts提供MVC的一个实现,是Java Web应用的一个框架(Framework).它主要采用了____D____模式。浏览器请求被控制器servlet ___A_____截取,控制器将浏览器表单的输入封装到____F____类型的JavaBean对象中,如果应用需要作合法性检测,该类型的____G____方法会被调用,该方法的返回类型是_____B___。如果合法性检测正确,控制器会将调用类型为____H____对象的方法__E______处理请求,该方法返回类型为____C____。A.org.apache.struts.action.ActionServlet
B.org.apache.struts.action.ActionErrors C.org.apache.struts.action.ActionForward
D.command
E.execute F.org.apache.struts.action.ActionForm G.validate H.org.apache.struts.action.Action 25.使用Tomcat,我们通常会设置环境变量_C_ CATALINA_HOME_指向安装目录;web应用的却省部署目录在安装目录下的___A__webapps___子目录;如果有多个web应用共享的包如数据库驱动程序,我们应该将其放置在安装目录的__D__common/lib__子目录;Tomcat的主要配置文件是安装目录下__B_conf _子目录下的___F__server.xml___;Tomcat 5的应用相关的配置文件放在安装目录下___E__conf/Catalina/
B.conf
C.CATALINA_HOME D.common/lib
E.conf/Catalina/