JSP面试知识Word文档下载推荐.docx

上传人:b****3 文档编号:6524349 上传时间:2023-05-06 格式:DOCX 页数:24 大小:28.52KB
下载 相关 举报
JSP面试知识Word文档下载推荐.docx_第1页
第1页 / 共24页
JSP面试知识Word文档下载推荐.docx_第2页
第2页 / 共24页
JSP面试知识Word文档下载推荐.docx_第3页
第3页 / 共24页
JSP面试知识Word文档下载推荐.docx_第4页
第4页 / 共24页
JSP面试知识Word文档下载推荐.docx_第5页
第5页 / 共24页
JSP面试知识Word文档下载推荐.docx_第6页
第6页 / 共24页
JSP面试知识Word文档下载推荐.docx_第7页
第7页 / 共24页
JSP面试知识Word文档下载推荐.docx_第8页
第8页 / 共24页
JSP面试知识Word文档下载推荐.docx_第9页
第9页 / 共24页
JSP面试知识Word文档下载推荐.docx_第10页
第10页 / 共24页
JSP面试知识Word文档下载推荐.docx_第11页
第11页 / 共24页
JSP面试知识Word文档下载推荐.docx_第12页
第12页 / 共24页
JSP面试知识Word文档下载推荐.docx_第13页
第13页 / 共24页
JSP面试知识Word文档下载推荐.docx_第14页
第14页 / 共24页
JSP面试知识Word文档下载推荐.docx_第15页
第15页 / 共24页
JSP面试知识Word文档下载推荐.docx_第16页
第16页 / 共24页
JSP面试知识Word文档下载推荐.docx_第17页
第17页 / 共24页
JSP面试知识Word文档下载推荐.docx_第18页
第18页 / 共24页
JSP面试知识Word文档下载推荐.docx_第19页
第19页 / 共24页
JSP面试知识Word文档下载推荐.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

JSP面试知识Word文档下载推荐.docx

《JSP面试知识Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《JSP面试知识Word文档下载推荐.docx(24页珍藏版)》请在冰点文库上搜索。

JSP面试知识Word文档下载推荐.docx

把请求转到一个新的页面。

plugin:

根据浏览器类型为Java插件生成OBJECT或EMBED标记

4、getAttribute()和setAttribute()的作用是什么?

5、get和post的区别?

Form中的get和post方法,在数据传输过程中分别对应了HTTP协议中的GET和POST方法。

二者主要区别如下:

1、Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据。

2、Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?

”连接,而各个变量之间使用“&

”连接;

Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL。

3、Get是不安全的,因为在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL记录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。

另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前。

Post的所有操作对用户来说都是不可见的。

4、Get传输的数据量小,这主要是因为受URL长度限制;

而Post可以传输大量的数据,所以在上传文件只能使用Post(当然还有一个原因,将在后面的提到)。

5、Get限制Form表单的数据集的值必须为ASCII字符;

而Post支持整个ISO10646字符集。

6、Get是Form的默认方法。

6、写一个JSP页面,里面要包含一个表单、表单包含文本框、列表框、单选按扭、复选框。

7、当前页面是a.jsp,用forward显示b.jsp的内容。

8、什么是taglib?

如何使用?

有哪些方式?

1、问题:

Tag究竟是什么?

如何实现一个Tag?

  一个tag就是一个普通的java类,它唯一特别之处是它必须继承TagSupport或者BodyTagSupport类。

这两个类提供了一些方法,负责jsp页面和你编写的类之间的交互,例如输入,输出。

而这两个类是由jsp容器提供的,无须开发人员自己实现。

换句话说,你只需把实现了业务逻辑的类继承TagSupport或者BodyTagSupport,再做一些特别的工作,你的类就是一个Tag。

并且它自己负责和jsp页面的交互,不用你多操心。

“特别的工作”通常有以下几个步骤:

  1)提供属性的set方法,此后这个属性就可以在jsp页面设置。

以jstl标签为例<c:

outvalue="

"

/>,这个value就是jsp数据到tag之间的入口。

所以tag里面必须有一个setValue方法,具体的属性可以不叫value。

例如:

setValue(Stringdata){this.data=data;

}

  这个“value”的名称是在tld里定义的。

取什么名字都可以,只需tag里提供相应的set方法即可。

  2)处理doStartTag或doEndTag。

这两个方法是TagSupport提供的。

还是以<c:

/>为例,当jsp解析这个标签的时候,在“<”处触发doStartTag事件,在“>”时触发doEndTag事件。

通常在doStartTag里进行逻辑操作,在doEndTag里控制输出。

  3)编写tld文件。

  4)在jsp页面导入tld

  这样,你的jsp页面就可以使用自己的tag了。

  通常你会发现自己绝大多数活动都集中在doStartTag或doEndTag方法里。

确实如此,熟悉一些接口和类之后,写taglib很容易。

正如《jsp设计》的作者所言:

里面的逻辑稍微有点复杂,但毕竟没有火箭上天那么难。

2、一个简单的例子:

OutputTag

packagediegoyun;

importjavax.servlet.jsp.JspException;

importjavax.servlet.jsp.JspWriter;

importjavax.servlet.jsp.tagext.TagSupport;

/**

*@authorchenys

*/

publicclassOutputTagextendsTagSupport

{

privateStringname=null;

publicvoidsetName(Stringname)

this.name=name;

publicintdoStartTag()throwsJspException{

try

JspWriterout=pageContext.getOut();

out.print("

Hello!

"

+name);

catch(Exceptione)

{

thrownewJspException(e);

returnEVAL_PAGE;

  简要说明:

  1、如何输出到jsp页面:

  调用JspWriterJspWriterout=pageContext.getOut();

out.print......

  记住这个方法就可以了。

  2、输出后如何作处理

  函数会返回几个值之一。

EVAL_PAGE表示tag已处理完毕,返回jsp页面。

还有几个值,例如EVAL_BODY_AGAIN和EVAL_BODY_INCLUDE等,后面我们会作讨论

  编写tld

<?

xmlversion="

1.0"

encoding="

ISO-8859-1"

?

<!

DOCTYPEtaglib

PUBLIC"

-//SunMicrosystems,Inc.//DTDJSPTagLibrary1.2//EN"

<taglib>

<tlib-version>1.0</tlib-version>

<jsp-version>1.2</jsp-version>

<short-name>diego</short-name>

--OutputTag-->

<tag>

<name>out</name>

<tag-class>diegoyun.OutputTag</tag-class>

<body-content>empty</body-content>

<attribute>

<name>name</name>

<required>false</required>

<rtexprvalue>false</rtexprvalue>

</attribute>

</tag>

</taglib>

  在WEB-INF下新建tlds文件夹,把这个文件取名为diego.tld,放到tlds文件夹下。

路径应该这样:

WEB-INF\tlds\diego.tld

关于tld的简单说明:

  short-name:

taglib的名称,也称为前缀。

比如<c:

/>里的“c”

  name:

tag的名字。

例如<c:

/>里的"

out”,我们的类也取名为out,由于有前缀作区分,不会混淆

  tag-class:

具体的tag类。

带包名

  body-content:

指tag之间的内容。

>......</c>起始和关闭标签之间就是body-content。

由于没有处理body-content,所以上面设为empty

  <attribute>里的name:

属性名字。

/>里的value。

名字可任意取,只要类里提供相应的set方法即可。

  required:

是否必填属性。

  rtexprvalue:

是否支持运行时表达式取值。

这是tag的强大功能。

以后我们会讨论。

暂时设为false

  编写jsp页面

<%@pagelanguage="

java"

%>

<%@tagliburi="

/WEB-INF/tlds/diego.tld"

prefix="

diego"

<html>

<body>

TestTag:

<diego:

outname="

diegoyun"

/>

</body>

</html>

  我的编程环境是eclipse+tomcat.启动服务器,如果一切按照上面步骤的话,就能看到TestTag:

Hello!

diegoyun字样

  最简单的tag就这么出来了。

并不难,是不是?

9、Jsp跳转有几种方式?

分别是什么?

10、JavaBuan的范围?

<

useBean>

标签里有一属性scope,它用来设定JavaBean的范围,它的值只能为Page,request,session,application,不可为其它值。

使用不同的scope属性值,能在不用的范围共享JavaBean.

11、JSP中动态INCLUDE与静态INCLUDE的区别?

答:

动态INCLUDE用jsp:

include动作实现

includepage="

included.jsp"

flush="

true"

/>

它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数

静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面

%@includefile="

included.htm"

%>

12、两种跳转方式分别是什么?

有什么区别?

有两种,分别为:

>

forwardpage="

nextpage.jsp"

/>

前者页面不会转向include所指的页面,只是显示该页的结果,主页面还是原来的页面。

执行完后还会回来,相当于函数调用。

并且可以带参数.后者完全转向新页面,不会再回来。

相当于goto语句。

JAVA方面

1、Java的类型转换,日期与字符串间的转换。

如果低级类型为char型,向高级类型(整型)转换时,会转换为对应ASCII码值,例如\r

charc='

c'

;

inti=c;

System.out.println("

output:

+i);

输出:

99;

对于byte,short,char三种类型而言,他们是平级的,因此不能相互自动转换,可以使用下述的强制类型转换。

shorti=99;

charc=(char)i;

System.out.println("

+c);

c;

但根据笔者的经验,byte,short,int三种类型都是整型,因此如果操作整型数据时,最好统一使用int型。

2.2强制类型转换

将高级变量转换为低级变量时,情况会复杂一些,你可以使用强制类型转换。

即你必须采用下面这种语句格式:

inti=99;

byteb=(byte)i;

floatf=(float)i;

可以想象,这种转换肯定可能会导致溢出或精度的下降,因此笔者并不推荐使用这种转换。

2.3包装类过渡类型转换

在我们讨论其它变量类型之间的相互转换时,我们需要了解一下Java的包装类,所谓包装类,就是可以直接将简单类型的变量表示为一个类,在执行变量类型的相互转换时,我们会大量使用这些包装类。

Java共有六个包装类,分别是Boolean、Character、Integer、Long、Float和Double,从字面上我们就可以看出它们分别对应于boolean、char、int、long、float和double。

而String和Date本身就是类。

所以也就不存在什么包装类的概念了。

在进行简单数据类型之间的转换(自动转换或强制转换)时,我们总是可以利用包装类进行中间过渡。

一般情况下,我们首先声明一个变量,然后生成一个对应的包装类,就可以利用包装类的各种方法进行类型转换了。

例1,当希望把float型转换为double型时:

floatf1=100.00f;

FloatF1=newfloat(f1);

Doubled1=F1.doubleValue();

//F1.doubleValue()为Float类的返回double值型的方法

当希望把double型转换为int型时:

doubled1=100.00;

DoubleD1=newDouble(d1);

inti1=D1.intValue();

当希望把int型转换为double型时,自动转换:

inti1=200;

doubled1=i1;

简单类型的变量转换为相应的包装类,可以利用包装类的构造函数。

即:

Boolean(booleanvalue)、Character(charvalue)、Integer(intvalue)、Long(longvalue)、Float(floatvalue)、Double(doublevalue)

而在各个包装类中,总有形为×

×

Value()的方法,来得到其对应的简单类型数据。

利用这种方法,也可以实现不同数值型变量间的转换,例如,对于一个双精度实型类,intValue()可以得到其对应的整型变量,而doubleValue()可以得到其对应的双精度实型变量。

3字符串型与其它数据类型的转换

通过查阅类库中各个类提供的成员方法可以看到,几乎从java.lang.Object类派生的所有类提供了toString()方法,即将该类转换为字符串。

Characrer,Integer,Float,Double,Boolean,Short等类的toString()方法toString()方法用于将字符、整数、浮点数、双精度数、逻辑数、短整型等类转换为字符串。

如下所示:

inti1=10;

floatf1=3.14f;

doubled1=3.1415926;

IntegerI1=newInteger(i1);

//生成Integer类\rFloatF1=newFloat(f1);

//生成Float类\rDoubleD1=newDouble(d1);

//生成Double类\r//分别调用包装类的toString()方法转换为字符串Stringsi1=I1.toString();

Stringsf1=F1.toString();

Stringsd1=D1.toString();

Sysytem.out.println("

si1"

+si1);

sf1"

+sf1);

sd1"

+sd1);

五、将字符型直接做为数值转换为其它数据类型

将字符型变量转换为数值型变量实际上有两种对应关系,在我们在第一部分所说的那种转换中,实际上是将其转换成对应的ASCII码,但是我们有时还需要另一种转换关系,例如,'

1'

就是指的数值1,而不是其ASCII码,对于这种转换,我们可以使用Character的getNumericValue(charch)方法。

六、Date类与其它数据类型的相互转换

整型和Date类之间并不存在直接的对应关系,只是你可以使用int型为分别表示年、月、日、时、分、秒,这样就在两者之间建立了一个对应关系,在作这种转换时,你可以使用Date类构造函数的三种形式:

Date(intyear,intmonth,intdate):

以int型表示年、月、日

Date(intyear,intmonth,intdate,inthrs,intmin):

以int型表示年、月、日、时、分

Date(intyear,intmonth,intdate,inthrs,intmin,intsec):

以int型表示年、月、日、时、分、秒\r

在长整型和Date类之间有一个很有趣的对应关系,就是将一个时间表示为距离格林尼治标准时间1970年1月1日0时0分0秒的毫秒数。

对于这种对应关系,Date类也有其相应的构造函数:

Date(longdate)

获取Date类中的年、月、日、时、分、秒以及星期你可以使用Date类的getYear()、getMonth()、getDate()、getHours()、getMinutes()、getSeconds()、getDay()方法,你也可以将其理解为将Date类转换成int。

而Date类的getTime()方法可以得到我们前面所说的一个时间对应的长整型数,与包装类一样,Date类也有一个toString()方法可以将其转换为String类。

有时我们希望得到Date的特定格式,例如20020324,我们可以使用以下方法,首先在文件开始引入,

importjava.text.SimpleDateFormat;

importjava.util.*;

java.util.Datedate=newjava.util.Date();

//如果希望得到YYYYMMDD的格式SimpleDateFormatsy1=newSimpleDateFormat("

yyyyMMDD"

);

StringdateFormat=sy1.format(date);

//如果希望分开得到年,月,日SimpleDateFormatsy=newSimpleDateFormat("

yyyy"

SimpleDateFormatsm=newSimpleDateFormat("

MM"

SimpleDateFormatsd=newSimpleDateFormat("

dd"

Stringsyear=sy.format(date);

Stringsmon=sm.format(date);

Stringsday=sd.format(date);

结束语:

当然,笔者的论述只是一人之见,如果希望更多了解有关JAVA数据类型转换的知识,笔者建议参考JAVA类库java.util.*下面的

Integer类\r

Boolean类\r

Character类\r

Float类\r

Double类\r

String类\r

Date类

根据自己的需要,参考不同类的各种成员方法进行数据类型之间的转换。

大家可以参考JAVA的网上类库或下载一份,来更灵活的利用其中的成员方法进行数据类型之间的转换,IP地址:

补充:

如何将字串String转换成整数int?

A.有两个方法:

1).inti=Integer.parseInt([String]);

或i=Integer.parseInt([String],[intradix]);

2).inti=Integer.valueOf(my_str).intValue();

注:

字串转成Double,Float,Long的方法大同小异.2如何将整数int转换成字串String?

A.有叁种方法:

1.)Strings=String.valueOf(i);

2.)Strings=Integer.toString(i);

3.)Strings="

+i;

Double,Float,Long转成字串的方法大同小异.这是一个例子,说的是JAVA中数据数型的转换.供大家学习

2、连一个数据库。

给一个SQL语句,对返回的结果集进行操作。

packagecom.bluedot.util;

importjava.sql.Connection;

importjava.sql.DriverManager;

importjava.sql.SQLException;

publicclassConnDB

publicstaticStringjdbcDriver="

org.gjt.mm.mysql.Driver"

publicstaticStringurl="

jdbc:

mysql:

//localhost:

3306/test_user"

publicstaticStringname="

root"

publicstaticStringpassword="

publicConnDB()

{

super();

}

publicstaticConnectiongetConnection()

Connectionconn=null;

try

{

Class.forName(jdbcDriver).newInstance();

conn=DriverManager.getConnection(url,name,password);

}

catch(InstantiationExceptione)

//TODOAuto-generatedcatchblock

e.printStackTrace();

catch(IllegalAccessExceptione)

catch(ClassNotFoundExceptione)

//TODOAuto-generatedcatch

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2