javaEE---web 开发

来源:互联网 发布:2013网络购物交易额 编辑:程序博客网 时间:2024/05/22 13:24

    javaEE  web开发之 jsp


1.jsp是什么?

Java Server Pages,中文名叫java服务器页面,jsp程序包含三部分:html+java 代码 +jsp标签。是一种简化serverlet设计,用于制作动态网页的技术。


2.jsp的九大内置对象分别是,以及他们各自的作用范围?

request       用户端请求,此请求会包含来自GET/POST请求的参数;----  作用范围--- 从上一页到下一个页面。

response      网页传回用户端的回应----  作用范围--- 当前页面。

pageContext  网页的属性是在这里管理----  作用范围--- 当前页面。

session       与请求有关的会话期----  作用范围---同一个网站内。

application    servlet 正在执行的内容----  作用范围---同一个网站内。

config        servlet的构架部件----  作用范围--- 当前页面。

out           用来传送回应的输出   (用来向客户端输出数据)----  作用范围--- 当前页面。

page          JSP网页本身----  作用范围--- 当前页面。

exception     针对错误网页,未捕捉的例外 (异常)----  作用范围--- 当前页面。

3.B/S和C/S的区别?

B/S即 Browser/Server 的缩写,客户机上只需要安装一个浏览器(Browser),如IE、Firefox、chrome、oprea等,服务器端安装了oracle、sybase、sql server等数据库,客户就可以通过www浏览器实现访问。该模式的特点是大量的业务逻辑工作都在服务器上进行,客户端浏览器只负责结果的显示。

C/S即Client/Server 的缩写,服务器端也是需要采用高性能的PC、工作站、并采用大型数据库,而客户端需要安装特定的客户端软件(如 QQ需要安装专门的QQ客户端),才能进行客户端到服务器的访问。


二者的区别主要体现在下面这些方面:

 1.硬件环境:

C/S一般建立在专用的网络上(比如银行的ATM取款机),小范围的网络环境中,方便自己的管理,而B/S则是建立在广域网中,作用范围大。

2.对安全的要求:

C/S一般面对的是相对固定的用户(比如ATM中的每一个用户),对信息安全控智能力强,对于比较机密的信息则采用C/S架构,而对于那些可以公开的信息,则采用B/S方式,进行面向大众公开。B/S安全控制能力相对来说较弱。(由此可以看出,没有绝对的优和劣,将二者各自的优点集合起来使用,是最明智的选择)。

3.对程序架构不同:

C/S更加注重流程,可以对权限进行多层次的检验,对运行速度没有太大的要求(你取钱的时候肯定的希望是安全第一,慢点肯定能忍受,你肯定不想着钱取着取着,就没了吧)

b/s构件组成方面构件个别的更换,实现系统的无缝升级,系统维护开销减小到最小,用户从网上可以自己下载安装就可以升级。

6.处理问题不同

c/s程序可以处理用户面固定,并且在相同区域,安全要求高需求,与操作系统相关,应该都是相同的系统。

b/s建立在广域网上,面向不同的用户群,分散地域,这是c/s无法作到的。与操作系统平台关系最小。

7.用户接口不同

c/s多是建立的windows平台上,表现方法有限,对程序员普遍要求较高。

b/s建立在浏览器上,有更加丰富和生动的表现方式与用户交流,并且大部分难度减低,减低开发成本。

8.信息流不同

C/S 程序一般是典型的中央集权的机械式处理, 交互性相对低
B/S 信息流向可变化, B-B B-C B-G等信息、流向的变化, 更象交易中心

4.jsp 和servlet的区别?

jsp是建立在servlet规范提供的功能上的一种动态网页技术。jsp代码不能直接执行,需要通过web服务器(Tomcat等)转换为servlet代码,最后转换成.class的字节码。servlet是可以直接执行的代码。servlet在浏览器和客户端起着一个中间转换者的作用,将jsp动态的内容混合静态的内容产生html,最终送还给浏览器,显示在页面上。


5.servlet的生命周期?

 Servlet 的生命周期始于将它装入 Web 服务器的内存时,并在终止或重新装入 Servlet 时结束。包括加载实例化初始化处理请求以及服务结束。这个生存期由 javax.servlet.Servlet 接口的 init,  service 和 destroy 方法表达。


6.如何理解MVC?

 MVCModel-View-Controller的简写。

“Model” 代表的是应用的业务逻辑 (通过JavaBean,EJB组件实现),

“View” 是应用的表示面(由JSP页面产生),

“Controller” 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。

7.servlet中 Forword和SendRedirect区别?

Forword是局部跳转,容器中控制权的跳转,在客户端浏览器地址栏中不会显示出转向后的地址;转发页面和跳转到的页面之间可以共享传递的参数。

SendRedirect 是服务器告诉客户端要进行从新发送请求,这样,从浏览器的地址栏中可以看到跳转后的链接地址。

所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。但在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。

forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。

redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。


8.四种会话跟踪技术
会话作用域ServletsJSP 页面描述
page否是代表与一个页面相关的对象和属性。一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示。这既包括 servlet 又包括被编译成 servlet 的 JSP 页面;
request是是代表与 Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件(由于 forward 指令和 include 动作的关系);
session是是代表与用于某个 Web 客户机的一个用户体验相关的对象和属性。一个 Web 会话可以也经常会跨越多个客户机请求;
application是是代表与整个 Web 应用程序相关的对象和属性。这实质上是跨越整个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域.


9.JSP中文乱码的问题如何解决?

首先问一个问题:为什么会出现中文乱码呢?

归根到底还是我天朝采用的编码与国际标准的不一样:

相信大家在新建一个.jsp的文件,打开后都有看到过这句话<% page contentType=”text/html; charset=gb2312″ %>

这条语句决定了此页面使用GB2312编码形式,而在数据库中一般用的是iso-8859-1字符集存储数据. 而Java程序在处理字符时默认采用统一的ISO-8859-1字符集(体现Java国际化思想),所以在添加数据时,默认的字符集编码是

iso-8859-1,而页面采用的是GB2312,所以就出现乱码问题。为解决此问题应在存储的时候把GB2312换转成

iso-8859-1。有此时候在读出时也会出现乱码,那么只需反过来就可以了,把iso-8859-1转换成GB2312。

具体实例归纳了以下几点:
1、在建立JSP页面时应该注意在jsp页面的头部加入一下代码
<% page contentType=”text/html; charset=gb2312″ %>
此方法是解决JSP页面显示时的乱码。
2、有时还需在HTML代码中的<head></head>中加入这句
<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″>
3、在bean中用的是iso-8859-1编码,在jsp中一般用GB2312编码,处理此类乱码问题如下
String str=new String(strName.getBytes(“iso-8859-1”),”GB2312”);
具体用到此方法的地方为,当提交表单到bean(bean的功能是存储数据到数据库)表单提交后,数据库中存入的数据确变成了????,因此在调用bean之前应对编码进行转换,方法:String str=new String(request.getParameter().getBytes(“iso-8859-1”),”GB2312”);
这样,存入数据库的数据库的数据就可见了。
4、对于页面间的参数传递也可以用这个方法来处理乱码问题:
public String getStr(String str)
{
try
{
String temp_p=str;
byte[] temp_t=temp_p.getBytes(“ISO8859-1″);
String temp=new String(temp_t);
return temp;
}
catch(Exception e)
{}
return “null”;
}
5、在表单定义时加上这个属性有时也可以解决表单提交过程中出现的乱码
<form enctype=”multipart/form-data”></form>
6、提交英文字符能正确显示,如果提交中文时就会出现乱码。原因:浏览器默认使用UTF-8编码方式来发送请求,而UTF-8和GB2312编码方式表示字符时不一样,这样就出现了不能识别字符。解决办法:通过request.setCharacterEncoding(“gb2312″)对请求进行统一编码,就实现了中文的正常显示

10.Cookie 和 Session的区别?

详见此处 :http://blog.csdn.net/qy1387/article/details/8054264

我觉得讲的蛮好的,就借鉴哈别人的。




PS:以上的知识点只是用于自己对相关知识点的总结,便于以后的查看,若有哪些地方不对的地方,忘大家提出宝贵的意见。

0 0