欢迎光临
我们一直在努力

学习java需要知道的一些问题-JSP教程,Java技巧及代码

建站超值云服务器,限时71元/月

一、准备篇

1 什么是j2ee?它和普通的java有什么不同?

答:j2ee全称为java2 platform, enterprise edition。

“j2ee平台本质上是一个分布式的服务器应用程序设计环境——一个java环境,它提供了:

·宿主应用的一个运行基础框架环境。

·一套用来创建应用的java扩展api。”(引自《j2ee服务器端高级编程》)

2 j2ee好学吗?

答:j2ee是很多技术的集合体,并且还在成长中。

你会遇到很多专有名词:比如(x)html,servlet/jsp,jdbc,jms,jndi,ejb,xml,web service……。

尤其是xml和web service正在快速成长。幸运的是,你不需要等到学会所有技术后再开始编程。

大体上j2ee可以分成3个主要应用:servlet/jsp,ejb,xml/web service 和一些支撑技术例如jdbc和jndi。

你可以一个一个的学。

3 j2ee有什么用?

答:用来建设大型的分布式企业级应用程序。或者用更时髦的名词说就是“电子商务”应用程序。

这些企业可能大到拥有中心数据库服务器,web服务器集群和遍布全国的办公终端,也可能小到只不过想做一个网站。

4 学j2ee有前途吗?

答:在这一市场目前只有一种技术可以和j2ee竞争,那就是microsoft的.net。

相对来说.net要“新”一些而j2ee要“老”一些。

但是.net只能用于windows平台(microsoft声称要开发c#在linux上的虚拟机但是尚未兑现该诺言),

考虑到linux的发展势头,你可以相信.net不会一统天下。

5 据说j2ee的性能不如.net好,是真的吗?

答:在sun公司提供的样例程序pet store上,microsoft声称不如相同的.net程序好。

而sun公司反驳说这一程序不能真正体现j2ee的性能,并且指责microsoft在数据库上做了优化。

作者没有学习过.net因而不能妄下断言。

无论如何,大型分布式程序中的性能瓶颈通常首先来自于错误的设计。

6 听你说了这么多,我想学着玩玩。

答:除非你想靠它当饭吃或者作为技术储备,否则请不要浪费你的时间。

flash要好玩得多。计算机游戏就更加好玩了。

7 学习j2ee该怎么开始?

答:首先,下载一个j2ee服务器。其次,去java.sun.com下载j2ee的api。第三,找一本好的参考书。最后,找一个顺手的ide。

j2ee服务器。你可以用sun的j2ee sdk(免费),或者weblogic(性能最好,但是太大,而且作者不推荐盗版行为),或者jboss(免费,就是文档太少),或者jrun(开发版免费,作者用这个)。参考书作者感觉wrox的《j2ee服务器端高级编程》不错,但是太老(作者手头的是2001年中文版)。你还需要去下载一些最新的技术资料(当然肯定是英文的)。

ide如果你的机器配置够好(内存至少512m以上,256m或以下请勿考虑),可以用ibm的wsad,不然就继续用eclipse或者其他。

你也可以经常去水木清华的java版逛逛,但是在发贴前先看看精华区里有没有你要的答案。

8 我下了一个j2ee服务器但是不会配置。

答:请认真阅读随机指导文档,不同的服务器的配置都不一样,作者爱莫能助。

9 我发现你没有提到tomcat。

答:tomcat只是一个web服务器,更准确地说主要只是一个web container。

如果你想要学习ejb的话,tomcat无法满足你的需要。

二、 servlet/jsp篇

10 什么是servlet?

答:一个servlet是一个java类。它处理http(s)请求并作出响应,包括返回一个html页面或转交给其他url处理。

servlet必须运行在一个web container例如tomcat中。

servlet必须是javax.servlet.http.httpservlet的子类,

你可以继承doget()或者dopost()方法,两者分别对应于http(s)中的get请求和post请求。

11 我怎么获得http请求里的参数?

答:httprequest的getparameter()方法。例如:string paramvalue = request.getparameter("paramname");

12 我怎么返回结果?

答:你可以利用相关api打开一个输出流,并向流中直接写入一个html页面。

但是作者完全不赞成这样做。一方面这样做会很罗嗦。

另一方面从model-view-controller模式(在《j2ee核心模式》中被归为front controller模式)的观点来看,

你应当提供一些html或者jsp作为视图(view),而servlet则根据请求参数决定转到哪一个视图。

你可以利用response.sendredirect(…)方法或request.getdispatcher(…).forward()方法来实现。

13 sendredirect()和forward()有什么不同?

答:sendredirect()是向浏览器发送一个redirect通知,浏览器重定向到新的url。

而forward是在服务器端直接转到新的url,对于浏览器是透明的。

前者浏览器的地址栏显示的是新的url,后者浏览器的地址栏显示的是servlet的url。

因而当目标url会自动刷新时,两者会造成一些差别。

14 我写了一个servlet程序,怎么运行它?

答:开发j2ee程序有一个部署(deploy)的概念,实际上是开发——部署——运行的三部曲。

大多数服务器支持hot deploy。你只需要在相应的application目录(具体路径依赖于服务器)下面

建立一个符合war或ear格式(参见16,17)的目录,启动服务器,就可以通过浏览器访问了。

特别的,你的servlet的class文件应当放在/web-inf/classes目录中。

注意j2ee sdk不支持hot deploy,你需要通过它的deploy tool来部署。

tomcat只支持war格式。

15 ear和war有什么不同?

答:ear是一个完整的j2ee应用程序,包括web部分和ejb部分。

war只是其中的web部分。

16 ear格式是怎样的?

答:一个ear可以包含任意多个war或ejb jar,并且包含一个meta-inf的目录。

在/meta-inf中包含了一个application.xml,其中描述了这个ear包含哪些模块,以及安全性配置。

细节请看参考书。

17 war格式是怎样的?

答:一个war包含一个web-inf的目录,这个目录下包含classes目录,lib目录和web.xml。

/web-inf/classes存放按package组织的class文件,/web-inf/lib目录存放jar文件,

web.xml描述了很多东西,请读参考书。

18 我的普通html文件应当放在哪里?

答:放在除了/web-inf以外的其他地方。

19 我访问不到servlet,甚至连html文件都访问不到!

答:第一你没启动服务器。第二你敲错了端口。第三你没有正确配置context-path。

第四你的服务器不支持auto reload或者你关闭了这一选项,你得重启服务器。

第五确认你没有把html放在/web-inf目录下,那是访问不到的。

20 我能访问html但是访问不到servlet。

答:请检查你的web.xml文件。确保你正确定义了<servlet>和<servlet-mapping>元素。

前者标识了一个servlet,后者将一个相对于context-path的url映射到一个servlet。

在tomcat中你可以通过/context-path/servlet/package/servletname的形式访问servlet,

但是这只是tomcat的便捷访问方式,并不是正式规范。

细节请看参考书。

21 什么是jsp?它和servlet有什么区别?

答:你可以将jsp当做一个可扩充的html来对待。

虽然在本质上jsp文件会被服务器自动翻译为相应的servlet来执行。

可以说servlet是面向java程序员而jsp是面向html程序员的,除此之外两者功能完全等价。

22 我的jsp显示的汉字是乱码。

答:在你的jsp开头加上一行 <%@ page contenttype="text/html; charset=gb2312"%>

如果你已经声明了page我想你知道该怎么修改。

23 jsp文件存放在哪里?

答:除了/web-inf下的任何地方。

24 在jsp里面怎么引用java bean。

答:首先,确认你要引用的类在/web-inf/classes下或在/web-inf/lib的某个jar内。

其次,在jsp里加一行 <jsp:usebean id="…" scope="…" class="…"/>

具体解释请看参考书。

25 我想在servlet间传递数据。

答:利用session。在servlet/jsp中,你可以在4个地方保存数据。

1) page,本页面。

2) session,用来存放客户相关的信息,比如购物车,对应接口为javax.servlet.http.httpsession。

session机制实际上是cookie和url rewrite的抽象,服务器会自动使用cookie或url rewrite来实现。

3) request,可以在forward()时传递信息,对应接口为javax.servlet.http.httprequest。

4) application,或称context,存放全局信息,对应接口为javax.servlet.servletcontext。

26 怎么调用cookie?

答:作者建议使用session,你总是会遇到某些禁用cookie的用户。这时session会自动使用url重写来实现。

27 怎么在jsp里面实现文件下载?

答:实际上这是一个html的问题。答案是一个超链接<a>。

28 怎么实现文件上传?

答:客户端是html问题,在form中设置method为post,enctype为multi-part/form-data,加一个<input type="file">。

而在接收的servlet中只是一个i/o问题。

29 我想让页面自动刷新,比如聊天室。

答:这是一个html问题,在<head>部分中加一条<meta http-equiv="refresh" content="5" url="…">。

这是所谓的clinet-push,客户端刷新技术。

30 我想让用户登录以后才能访问页面。

答:使用声明式安全措施。

你只需要在web.xml中定义安全角色(role),并定义受保护的url集合只能由特定role访问。

大多数服务器支持基于数据库的用户映射,你只要在相应数据库中建立两张表并配置服务器就可以了。

注意j2ee sdk不支持基于数据库的用户映射。

细节请看参考书和服务器文档。

31 我想要能注册用户。

答:参看30。在接受注册请求的servlet中执行写入数据库操作即可。

32 怎么在jsp中访问数据库?

答:标准做法是使用dao模式,定义一个java bean来访问数据库并在jsp中使用。

然而,当你的数据库模式很简单时,你可以使用jstl中的<sql:query>标签来快速访问。

33 什么是jstl?

答:jstl是jsp standard tag library的缩写。这是一组通用标签并将成为jsp 2.0的一部分。

其中包含赋值<c:set>,分支<c:if>,循环<c:foreach>,查询数据库<sql:query>,更新数据库<sql:update>

等。目前你需要像添加自定义标签库一样来添加jstl,但是可以预计jsp 2.0会将jstl作为组成部分。

标签库可以在 http://jakarta.apache.org 下载。注意jstl需要在支持jsp1.2或更高版本的容器下运行。

帮助文件可以阅读sun的jstl正式规范。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 学习java需要知道的一些问题-JSP教程,Java技巧及代码
分享到: 更多 (0)

相关推荐

  • 暂无文章