还剩6页未读,继续阅读
文本内容:
Javaweb复习资料1.理解Jsp的page指令page指令可以定义下面这些大小写敏感的属性(大致按照使用的频率列出)import、contentType、pageEncoding、session、isELIgnored(只限JSP
2.0)、buffer、autoFlush、info、errorPage、isErrorPage、isThreadSafe、language和extends
2.理解Jsp的include指令include指令是编译阶段的指令,即include所包含的文件的内容是编译的时候插入到JSP文件中,JSP引擎在判断JSP页面未被修改,否则视为已被修改由于被包含的文件是在编译时才插入的,因此如果只修改了include文件内容,而没有对JSP修改,得到的结构将不会改变,所以直接执行已经存在的字节码文件,而没有重新编译因此对不经常变化的内容,用include指令是合适的,如果需要的内容是经常变化的,则需要动作元素jsp:include.下面将详细区分他们之间的不同
1.include指令 include可以在JSP页面转换成Servlet之前,将JSP代码插入其中它的主要优点是功能强大,所包含的代码可以含有总体上影响主页面的JSP构造,比如属性、方法的定义和文档类型的设定它的缺点是难于维护只要被包含的页面发生更改,就得更改主页面,这是因为主页面不会自动地查看被包含的页面是否发生更改语法%@includefile=sample.jsp%
2.include动作 jsp:include动作是在主页面被请求时,将次级页面的输出包含进来尽管被包含的页面的输出中不能含有JSP,但这些页面可以是其他资源所产生的结果服务器按照正常的方式对指向被包含资源的URL进行解释,因而这个URL可以是Servlet或JSP页面服务器以通常的方式运行被包含的页面,将产生的输出放到主页面中,这种方式与RequestDispatcher类的include方法一致它的优点是在被包含的页面发生更改时,无须对主页面做出修改它的缺点是所包含的是次级页面的输出,而非次级页面的实际代码,所以在被包含的页面中不能使用任何有可能在整体上影响主页面的JSP构造语法jsp:includepage=sample.jspflush=truejsp:paramname=namevalue=value/ /jsp:include
3.理解Jsp的include标签和forward标签forward是转发的另一个页面.include是把另一个页面加载到当前页面.JSP:include是将一段java代码或页面放到页面指定的位置jsp:forward是跳转页面的include标签forword标签4理解HTTP协议HTTP是基于一种请求/响应模式的、无状态的、应用层的协议,基于TCP协议传输数据,支持客户/服务器模式,每次完整交互都包含HTTP请求和HTTP响应Http请求由三个部分组成,请求行、消息报头、请求正文(可选,为空也行);请求方法主要包括GET、POST、HEAD、PUT、DELETE….,在我工作中常用的就GET跟POSTGET请求获取Request-URI所标识的资源;POST在Request-URI所标识的资源后附加新的数据(body);每种方法规定了客户与服务器联系的类型不同,由于http协议简单,使得http服务器的程序规模小,因而通信速度快HTTP有5种状态码
5.理解Tomcat的目录
1、bin该目录下存放的是二进制可执行文件,如果是安装版,那么这个目录下会有两个exe文件tomcat
6.exe、tomcat6w.exe,前者是在控制台下启动Tomcat,后者是弹出UGI窗口启动Tomcat;如果是解压版,那么会有startup.bat和shutdown.bat文件,startup.bat用来启动Tomcat,但需要先配置JAVA_HOME环境变量才能启动,shutdawn.bat用来停止Tomcat;
2、conf这是一个非常非常重要的目录,这个目录下有四个最为重要的文件server.xml配置整个服务器信息例如修改端口号,添加虚拟主机等;tomcatusers.xml存储tomcat用户的文件,这里保存的是tomcat的用户名及密码,以及用户的角色信息可以按着该文件中的注释信息添加tomcat用户,然后就可以在Tomcat主页中进入TomcatManager页面了;web.xml部署描述符文件,这个文件中注册了很多MIME类型,即文档类型这些MIME类型是客户端与服务器之间说明文档类型的,如用户请求一个html网页,那么服务器还会告诉客户端浏览器响应的文档是text/html类型的,这就是一个MIME类型客户端浏览器通过这个MIME类型就知道如何处理它了当然是在浏览器中显示这个html文件了但如果服务器响应的是一个exe文件,那么浏览器就不可能显示它,而是应该弹出下载窗口才对MIME就是用来说明文档的内容是什么类型的!context.xml对所有应用的统一配置,通常我们不会去配置它
3、lib Tomcat的类库,里面是一大堆jar文件如果需要添加Tomcat依赖的jar文件,可以把它放到这个目录中,当然也可以把应用依赖的jar文件放到这个目录中,这个目录中的jar所有项目都可以共享之,但这样你的应用放到其他Tomcat下时就不能再共享这个目录下的Jar包了,所以建议只把Tomcat需要的Jar包放到这个目录下;
4、logs这个目录中都是日志文件,记录了Tomcat启动和关闭的信息,如果启动Tomcat时有错误,那么异常也会记录在日志文件中
5、temp存放Tomcat的临时文件,这个目录下的东西可以在停止Tomcat后删除!
6、webapps存放web项目的目录,其中每个文件夹都是一个项目;如果这个目录下已经存在了目录,那么都是tomcat自带的项目其中ROOT是一个特殊的项目,在地址栏中没有给出项目目录时,对应的就是ROOT项目http://localhost:8080/examples,进入示例项目其中examples就是项目名,即文件夹的名字
7、work运行时生成的文件,最终运行的文件都在这里通过webapps中的项目生成的!可以把这个目录下的内容删除,再次运行时会生再次生成work目录当客户端用户访问一个JSP文件时,Tomcat会通过JSP生成Java文件,然后再编译Java文件生成class文件,生成的java和class文件都会存放到这个目录下
8、LICENSE许可证
9、NOTICE说明文件
6.指令include和标签include的共同点和不同点相同点都用于包含其他页面不同点
(1)文件包含指令%@includefile=path%动作包含指令jsp:includepage=url/
(2)文件包含的include指令是静态包含即使被包含的文件中有JSP代码,在包含时也不会被编译执行将两个页面组合成一个后,编译处理为一个Java文件,最后返回结果页面jsp:include动作标签的原理是将被包含的页面编译处理后将结果包含在页面中当该标识被执行时,程序会请求转发到被包含的页面并将执行结果输出到浏览器中,然后返回包含页继续执行后面的代码
(3)jsp:include动作和include指令之间的根本性的不同在于它们被调用的时间jsp:include动作标签在请求期间被激活,而include指令在页面转换期间被激活
7.服务端跳转和客户端跳转的共同点和不同点服务端跳转又称为请求转发,客户端跳转又称为重定向服务端跳转后浏览器地址栏URL不变,刷新会导致重复提交;客户端跳转后浏览器地址栏URL将改变服务端跳转是一次请求一次响应,可以使用request传递数据;而客户端跳转是两次请求两次响应,request中的数据会丢失服务端跳转只能跳转到同一个应用程序的其他资源;而客户端跳转则可以重定向到任意的URL
8.说说Session和Cookie的关系关系Cookies是属于Session对象的一种但有不同,Cookies不会占服务器资源,是存在客服端内存或者一个cookie的文本文件中;而“Session”则会占用服务器资源区别
1、cookie数据存放在客户的浏览器上,session数据放在服务器上
2、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session
3、session会在一定时间内保存在服务器上当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie
5、可以考虑将登陆信息等重要信息存放为session,其他信息如果需要保留,可以放在cookie中
9.用图形和文字描述hello.jsp的执行过程第一步请求进入Web容器,将JSP页面翻译成Servlet代码第二步编译Servlet代码,并将编译过的类文件装入Web容器(JVM)环境第三步Web容器为JSP页面创建一个Servlet类实例,并执行jspInit方法第四步Web容器为该JSP页面调用Servlet实例的_jspService方法;将结果发送给用户
10.请写出9个内置对象的生存周期和功能
1.request对象客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应它是HttpServletRequest类的实例
2.response对象response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它它是HttpServletResponse类的实例
3.session对象session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止它是HttpSession类的实例.
4.out对象out对象是JspWriter类的实例是向客户端输出内容常用的对象.
5.page对象page对象就是指向当前JSP页面本身,有点象类中的this指针,它是类的实例.
6.application对象application对象实现了用户间数据的共享,可存放全局变量它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访问服务器的启动和关闭决定了application对象的生命它是ServletContext类的实例
7.exception对象
8.pageContext对象pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的SESSION,也可以取本页面所在的application的某一属性值,他相当于页面中所有功能的集大成者,它的本类名也叫pageContext
9.config对象config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContext对象)
11.表单和超链接发请求的共同点和不同点表单提交简单易操作,依靠在form标签对中的inputtype=submit提交按钮进行请求发送和参数提交其中form标签的post属性决定提交方式是get还是post超链接提交请求的话,方式比较单一传递参数值是被写死的,并且只能使用get方式去发送请求如果不用javascript的话,超链接还是作为一个页面跳转按钮比较合适
12.理解request对象、session对象、application对象、config对象
1.session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止它是HttpSession类的实例
2.application对象实现了用户间数据的共享,可存放全局变量它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访问服务器的启动和关闭决定了application对象的生命它是ServletContext类的实例
3.request对象客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应它是HttpServletRequest类的实例一般用来获取页面传参的值4response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它它是HttpServletResponse类的实例
13.理解Mvc设计模式MVC全名是ModelViewController,是模型model-视图view-控制器controller的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中Model(模型)数据模型,提供要展示的数据,因此包含数据和行为,主要提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务主要使用的技术数据模型实体类(JavaBean),数据访问JDBC,Hibernate等View(视图)负责进行模型的展示,一般就是我们见到的用户界面,比如JSP,Html等Controller(控制器)接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示主要使用的技术servlet,Struts中的Action类等 MVC是一个框架模式,它强制性的使应用程序的输入、处理和输出分开使用MVC应用程序被分成三个核心部件模型、视图、控制器它们各自处理自己的任务最典型的MVC就是JSP+servlet+javabean的模式14,理解POST和GET请求使用get方法提交表单,请求的参数在请求的头部,可以通过request.getQueryString方法获取请求参数,且request.getContentLength方法返回值为-1;使用post方法提交表单,请求的参数存放在请求体里,所request.getQueryString方法获取不到请求参数,request.getContentLength可以获得请求体的长度通过get方法提交表单,因为请求表单存放在请求的头部,所以会在浏览器地址栏显示;而通过post方法提交则不会在地址栏显示,相对安全些并且由于不同浏览器对地址栏的长度各有不同的限制,故采取get方法提交,则请求参数的长度也会受到限制,而用post方法提交的请求请求参数放在请求体里,请求体长度没有限制,则请求参数长度也没有限制get方法提交表单是用字符方式提交,而post提交表单字符和字节方式都行
15.为什么application可以通过getRealPath()方法,取得虚目录的真实路径Application下文,ServletContext代表了整个容器的操作如果要想取得一个虚拟目录对应的绝对路径要使用getRealPath方法Stringpath=getServletContext.getRealPath/;application的操作本身是ServletContext接口的实例,但是在JSP中有一个方法的功能可以完全与之对应getServletContext方法Stringpath=this.getServletContext.getRealPath/;这个方法要重点使用
16.将一个jsp页面保存在WEB-INF文件夹之下,如何通过配置web.xml文件,访问该页面?
1、配置web.xml中的servlet servletservlet-nameindex/servlet-nameservlet-file/web-inf/index.jsp/servlet-file!—要执行的jsp文件--servlet-class跳转到首页的action/servlet-class/servletservlet-mappingservlet-nameindex/servlet-nameurl-pattern/index.action/url-pattern!--映射的路径--/servlet-mapping
2、访问地址:http://localhost:8080/index/index.jsp。