本片博客总结一下这学期学得JSP知识点。
1、简述请求转发与请求重定向的区别。
请求转发:
请求转发,即request.getRequestDispatcher().forward(),是一种服务器的行为,客户端只有一次请求,服务器端转发后会将请求对象保存,地址栏中的URL地址不会改变,得到响应后服务器端再将响应发给客户端;
请求重定向:
请求重定向,即response.sendRedirect(),是一种客户端行文,从本质上讲等同于两次请求,前一次请求对象不会保存,地址栏的URL地址会改变。
2、简述JSP页面的执行过程。
1. 用户请求JSP页面(HTTP请求)
2. web server中的servlet容器发现URL中有JSP后缀, 就调用JSP容器来处理
3. 如果此页面是第一次被请求,JSP容器要定位JSP页面文件并解释它,
4. JSP容器运行页JSP页面实例, 此时servlet(即JSP页面实例)就会出来HTTP请求, 生成对于的HTTP响应并传回给客户端. 如果此页面不是第一次被请求,则跳过3, 直接跳到4.
5. 结束
3、简述Servlet与JSP的区别。
1.JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。
2.JSP编译后是"类servlet"。
3.Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑
4、简述include指令标识和动作标识的差异。
两者的作用都是处理所需要的文件,但处理方式和处理时间不同。
include指令标记是在编译阶段就处理所需要的文件,被处理的文件在逻辑和语法上依赖于当前的jsp页面,优点是执行速度快。
include动作标记在jsp页面运行时才被处理的文件,被处理的文件在逻辑和语法上独立与当前的JSP页面,其优点是可以使用param子标记更灵活的处理所需要的文件,缺点是执行要慢一点
5、简述JSP内置对象及其作用。
1.request对象
客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。
2.response对象
response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。它是HttpServletResponse类的实例。
3.session对象
session对象指的是客户端与服务器的一次会话,从客户端连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。它是HttpSession类的实例.
4.out对象
out对象是JspWriter类的实例,是向客户端输出内容常用的对象
5.page对象
page对象就是指向当前JSP页面本身,有点象类中的this指针,它是java.lang.Object类的实例
6.application对象
application对象实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访问。服务器的启动和关闭决定了application对象的生命。它是ServletContext类的实例。
7.exception对象
exception对象是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。他实际上是java.lang.Throwable的对象
8.pageContext对象
pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的SESSION,也可以取本页面所在的application的某一属性值,他相当于页面中所有功能的集大成者,它的本类名也叫pageContext。
9.config对象
config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContext对象)
6、如何解决中文乱码问题?
1、在jsp页中加入一条语句:
<%@ pagecontentType="text/html;charset=gb2312" %>中文显示就正常了。
2、对于从网页中的文本框通过Stringparameter = request.getParameter(“parameter”);方式获得的字符串,均是8859_1的编码,
如果想把它显示在网页上就必须得用parameter = new String(parameter.getBytes(“8859_1”),”gb2312”)进行转换,windows和linux这两种系统都是一样的。
有一个简单方法,就是在 getParameter() 方法获取参数之前,使用request.setCharacterEncoding("GB2312");,将提交的信息转化为 GB2312 编码。
7、网络程序开发体系结构有哪两种?试比较两种结构的优缺点。
1开发维护成本
cs开发维护成本高于bs。因为采用cs结构时,对于不同的客户端要开发不同的程序,而且软件安装调试和升级都需要在所有客户机上进行。而bs,只需要将服务器上的软件版本升级,然后从新登录就可以了。
2.客户端负载
cs客户端负载大。cs客户端不仅负责和用户的交互,收集用户信息,而且还需要通过网络向服务器发出请求。bs把事务处理逻辑部分交给了服务器,客户端只是负责显示。
3.安全性
cs安全性高。cs适用于专人使用的系统,可以通过严格的管理派发软件,bs使用人数多,不固定,安全性低
由此可见,bs相对于cs有更多的优势,现在大量的程序都用bs结构。大量的软件公司都在开发bs版的软件,也就是web应用程序。
8、简述Web的工作原理。
当你想进入一个网页, 或者其他网络资源的时候,通常你要首先在你的浏览器上键入你想访问网页的统一资源定位符(Uniform Resource Locator),或者通过超链接方式链接到那个网页或网络资源。这之后的工作首先是URL的服务器名部分,被名为域名系统的分布于全球的因特网数据库解析,并根据解析结果决定进入哪一个IP地址(IPaddress)。
接下来的步骤是为所要访问的网页,向在那个IP地址工作的服务器发送一个HTTP请求。在通常情况下,HTML文本、图片和构成该网页的一切其他文件很快会被逐一请求并发送回用户。
网络浏览器接下来的工作是把HTML、CSS和其他接受到的文件所描述的内容,加上图像、链接和其他必须的资源,显示给用户。这些就构成了你所看到的“网页”。