Follow excellent,And success will chase you.
分类: Java
2013-07-26 18:03:17
本文将介绍如何使用 MyEclipse 来开发Web 项目(包括HTML,JSP,Servlet,Filter和后台Java 类),并进行发布,运行,测试和调试。本章将通过开发一个使用JDBC 进行登录验证的简单例子来给大家展示相关的操作过程。
那么哪些应用算是 Web 应用呢?简单说通过网络浏览器,例如IE,Firefox 等等上网看到的绝大多数网页,都属于Web 应用的范围,所以它的应用是非常的广的。要想做好一个Web 应用,只掌握Java 是远远不够的,您还得深入了解HTML,CSS,JavaScript 甚至AJAX,Flash,ActiveX 等技术。俗话说的好:三分相貌七分妆。用户第一印象看到的只能是看到的网页的样子和友好度,他是完全不懂所谓的.NET,PHP,JSP,ASP 还有什么ROR的,所以提示初学者多花些时间在Web 层的技术上。
创建Web 项目
本节内容将介绍如何创建一个 JSPHelloWorld 的Web 项目。选择菜单File > New >Web Project,可以启动创建Web 项目的向导,如图8.3 所示。
在这个图的 Project Name 中输入JSPHelloWorld,然后选中J2EE Specification Level 下面的Java EE 5.0 单选钮,最后点击Finish 按钮就可以创建Web 项目了。
注意:选择哪个版本的J2EE Specification Level 取决于你使用的服务器,例Tomcat4,Weblogic 9 以下版本请选择J2EE 1.4,而Tomcat 5,JBoss 4,或者GlassFish 这样
的服务器可以选择 Java EE 5.0。Java EE 5.0 可以直接使用 EL 表达式和JSTL。
图 8.3 新建Web Project 对话框
关于输入框的详细意义请参考下表:
选项 | 描述 |
Project name | 项目的名称。必须是有效的 Eclipse Java 项目名。 |
Location | 选中这个复选框来选择新项目的文件将存放到电脑上的其它位置 |
Directory | 项目的默认存放位置是放在 MyEclipse 启动时候工作区目录下的。当然可以选择位于工作区目录外的其它路径。 注意:不能选择位于工作区子目录下的另一子目录,因为Eclipse 禁止这种做法! |
Source folder | Java 源代码目录-将包含Java 包和.java 文件。这些内容会被加入到项目的Java 构造路径中。 |
Web root folder | 这个目录将包含 web 应用的内容,WEB-INF 目录以及对应的子目录。如果这个输入框内容为空,那么项目的根目录("/")将会成为web 根目录。 |
Context root URL | MyEclipse的发布工具会发布新Web项目时候所使用这个路径。默认使用的值是项目的名字。什么是上下文根目录?它是访问发布后的应用时所用的根路径,例如输入myapp后,将用地址 来访问这个项目. 你可以把这个输入框中的内容修改成全是小写字母的内容。 |
J2EE specification | 指定J2EE 规范的版本。需要检查服务器的文档来了解其所支持的版本。 |
Add JSTL 1.0 libraries |
启用此选项来添加 Java Standard Template Library (Java 标准模版库1.0或者1.1 版本)的 JAR 文件到新项目的 |
表8.1 新建Web 项目的选项说明
创建HTML 页面
注意:在实际的开发中,一般使用的都是像Frontpage 或者DreamWeaver 这样的工具来创建,可视化的(所见即所得,WYSWYG)的来修改静态网页(HTML)。因为MyEclipse的可视化网页编辑器功能是比较弱的。因此本节内容仅供参考。
启动创建 HTML 页面的对话框有多种方式,这里只介绍两种:1. 选择菜单 File > New> Html(Advanced Template);2. 选中Package Explorer 视图的WebRoot 目录,点击右键选择上下文菜单中的New > Html(Advanced Template)。这时候将会弹出创建HTML页面的对话框,如下图所示:
图 8.4 新建HTML 页面向导
在这个对话框中的 File Name(文件名)框中输入login.html,Template to use:(要使用的模版)右侧的下拉框选中Default HTML template(默认HTML 模版,另一个是带表单的模版)。最后点击Finish 按钮完成向导。稍后MyEclipse 会用HTML 编辑器来打开刚创建的文件,如图8.5 所示。在这里可以在页面设计器中可视化的修改网页内容,也可以点击格式工具栏上的按钮来可视化的修改网页的格式,还可以在源代码面板中直接修改HTML 源码。Properties 视图则显示了当前选中元素的属性,可以快速的对一些关键的属性进行修改。拖动设计器和源码标签之间的隔条可以对两个区域之间的大小进行调节,点击向上按钮可以最大化显示代码区,点击向下按钮则可以最大化显示设计区。点击Preview 标签可以同时在IE 和Mozilla 浏览器中查看页面的显示效果。
点击 Palette(工具箱,确切说应该是叫组件面板)可以选择对应的一些常用的代码片段插入到当前页面中,例如超链接,图片,表单和表单元素等等。HTML-Basic 里面列出常用的基本网页元素,而HTML-Form 下则列出了表单元素。
现在我们把它的内容修改成一个包含登录表单和客户端表单有效性验证的页面,然后点击工具栏上的保存按钮。代码内容请参考清单8.1。
图 8.5 HTML 编辑器
清单 8.2 登录页面
至此,创建静态页面的过程就简要介绍完毕了。在此先虚晃一枪,为什么表单的提交页面是login.aspx 呢?难道Java 也支持ASP.NET 嘛?答案请在创建Servlet中找。
创建JSP 页面
本节内容将会讲解创建JSP页面。实际上JSP编辑器许多地方都是和上文介绍的HTML编辑器非常相似的。因此本节内容将会简要介绍其过程。启动创建 HTML 页面的对话框有多种方式,这里只介绍两种:1. 选择菜单 File > New> JSP(Advanced Template);2. 选中Package Explorer 视图的WebRoot 目录,点击右键选择上下文菜单中的New > JSP(Advanced Template)。这时候将会弹出创建JSP 页面的对话框,和图8.4 非常相似。只需要在这个对话框中的File Name(文件名)框中输入result.jsp,然后点击Finish 按钮即可创建这个JSP 页面。
注意:Template to use 右侧的模版下拉框中有很多JSP 模版可以使用,例如支持JSF,Struts 等等的模版,这样可以加快开发的速度。
稍后 MyEclipse 会用HTML 编辑器来打开刚创建的文件,界面已经操作方法和图8.5非常类似,不同的是Palette 里面多了很多JSP 特有的内容,而编辑器的代码视图呢,也支持自动查错(但是不支持自动修正错误)和代码编写提示功能,如下图所示:
图 8.6 JSP 编辑器的查错和编码提示
当你在变量后按下.之后,会弹出代码完成提示,另外还支持断点的设置等等。因此使用MyEclipse 的JSP 编辑器可以大大减少开发人员出错的机会(在出现能查错的JSP 编辑器之前这是个大问题)。
现在我们将把这个页面的代码改写成如下清单所示内容:
清单 8.3 登录结果页面 result.jsp
在这个页面我们将使用JSP 2.0 里面的EL 表达式来显示登录结果信息,${message}就是一段EL 表达式,它将从request 或者session 里面查找名为message 的属性,其实就是调用getAttribute(“message”)然后把里面的内容显示出来。这个页面不包含其它复杂的代码,是因为JSP 页面一般来说是用作视图层的,专门用来显示数据用的,只能包含或者尽量少包含一些复杂的业务逻辑。
注意:EL 表达式不能在J2EE 1.4 的Web 项目中使用。如果您打算在J2EE 1.4 的Web 项目中编写这个页面,对应的代码是把
修改为:
即可。
然而有读者发现 Tomcat 5.5 中启用了Java EE 5 也无法使用EL 表达式,那么这种情况下的一种简单解决办法是用Tomcat 6.0。不过,Tomcat 5.5 下也有解决办法,第一种是设置整个项目使用el 表达式,需要在web.xml 中加上(控制一个项目):
第二种办法是设置某个jsp 页面使用el 表达式,需要在jsp 页面开头加上(控制单个页面):
在 page 指令中的isELIgnored 属性用来指定是否忽略EL 表达式。格式为:
如果设定为真,那么JSP 中的表达式被当成字符串处理。比如下面这个表达式${2000 % 20},在isELIgnored="true"时输出为${2000 % 20},而isELIgnored="false"时输出为100。Web 容器默认isELIgnored="false",但是为什么个别Tomcat 5.5 不支持呢?这我就不得而知了。
至于有没有全局的设置办法?我想应该也是有的,但是我还没找到。
创建Servlet
启动创建Servlet 的对话框有多种方式,这里只介绍两种:1. 选择菜单 File > New >Servlet;2. 选中Package Explorer 视图的项目,点击右键选择上下文菜单中的New >Servlet。这时候将会弹新建Servlet 类的对话框,如图8.7 所示。在这个对话框中的Package(包)框中输入servlets,Name(类名)输入LoginServlet,然后点击Next 按钮可以进一步设置映射文件。也可以点击Finish 按钮直接完成这个创建向导,不过此处将选择Next按钮来进入到下一步的设置页面。
图 8.7 新建Servlet 类对话框
在这一页中可以设置 Servlet 的父类(Superclass),以及修饰符(Modifiers),添加接口(Interfaces),选择模版(Template to use)以及一些选项(Options)。Options 中可以选择是否创建继承的方法(Inherited Methods),创建构造器(Constructors),初始化和销毁方法(init and destory)以及doGet,doPost,doPut,doDelete,getServletInfo等方法。详细意义请参考Servlet 开发的书籍。
当点击 Next 按钮后,将会进入修改,设置web.xml 的向导页面,如图8.8 所示。注意图中的红框,我们在这里在Servlet/JSP Mapping URL 右侧输入框中输入/login.aspx。这个路径可以帮你理解一个概念,那就是其实Servlet 的后缀可以是任何形式的字符串,例如.do,.php 等等。最后点击Finish 按钮来完成创建Servlet 的过程。
注意:Servlet 的映射路径一定要以/开始,或者以*.do 的方式出现,而且不能输入/*.do。
图 8.8 修改,设置web.xml 中的映射信息
对话框关闭后,稍等片刻 web.xml 和新创建的LoginServlet.java,可以看到web.xml的内容已经被自动加入了新的Servlet 定义,如下所示:
清单 8.4 加入了Servlet 定义的web.xml
至此Servlet就创建出来了,你可以接着修改Servlet的源码来加入更多功能。这个Servlet的最终访问路径是:,是不是看起来非常像.NET应用呢?不过这是个假的而已。
创建Filter(过滤器)
实际开发中都需要开发一些很有用的过滤器,来解决中文表单提交问题啊,给请求和响应加入GZIP 压缩功能啊,用户权限控制啊,等等,然而遗憾的MyEclipse 不支持直接创建过滤器。在这里只好手工创建一个解决Tomcat 表单提交中文问题的过滤器。选择菜单 File > New > Class,来创建一个名为TomcatFormFilter 的类,包名为filters。然后把类的代码修改为如下所示:
清单 8.5 过滤器代码
然后修改 web.xml 加入Servlet 定义,修改后的代码清单如下所示:
清单 8.6 加入了过滤器的web.xml 内容
创建数据库访问层(DAO)
做 Web 应用一般来说不访问数据库是不太可能的,因此本节就介绍给应用加入数据库访问功能。
首先第一步是创建数据库表
第二步是要加入JDBC驱动类库
这里打算使用MySQL数据库,对于Web项目来说加入类库文件非常容易,只要把mysql-connector-java-3.1.11-bin.jar这个文件复制到WebRoot/WEB-INF/lib下,MyEclipse会自动把文件加入到项目的类路径中。
第三步需要创建一个实体类,来代表数据库中的Student 对象,这个类用来保存和传递来自数据库库的数据信息。代码清单如下:
清单 8.7 Student 实体类
最后是创建一个数据库访问对象 ,其源码如下所示:
清单 8.8 StudentDAO 数据访问类
至此数据访问层的开发已经完成,为什么要多写这么多代码呢?这是因为分层的设计能够便于多人合作开发,也便于单独测试每一层的功能。当然,项目规模小的话把所有的代码都放到那个Servlet 里面就行了。
修改Servlet 调用后台类
现在我们可以修改 Servlet 来加入调用DAO 层代码然后判断登录的功能了,设置完登录状态后,会转向到/result.jsp。修改后的Servlet 代码如下所示:
清单 8.9 Servlet 加入登录判断功能
至此,这个简单的登录小项目就开发完毕了。
发布,重新发布,运行和测试应用
最快的运行方式就是在Package Explorer视图中选中项目节点StrutsLoginDemo,然后选择菜单Run > Run As > 3 MyEclipse Server Application,之后MyEclipse可能会显示一个可用的服务器列表,选中其中的服务器之一例如MyEclipse Tomcat并点击OK按钮后,就会自动发布或者重新发布应用然后启动服务器。也可以通过点击主界面工具栏上的 按钮发布完毕后,然后启动服务器来进行测试了。在Servers视图中选中服务器,之后点击视图工具栏上的 按钮以运行模式启动服务器。
服务器启动完毕后,点击工具栏上的 按钮来打开浏览器视图,然后键入地址: 来打开登录页面,如下图所示:
图 8.9 在MyEclipse 中打开浏览器测试应用
在表单的用户名处输入数据库里存在的学生的名字,例如张三,再输入密码,然后点击提交,就可以显示登录的结果了。
如果只是修改了 JSP 页面,那么MyEclipse 会自动把JSP 更新到服务器上,但是如果是改了类文件或者一些配置文件,那么需要手工重新发布这个项目。如何重新发布这个项目呢?我们可以在Servers 视图上选中所发布的项目,然后点击视图工具栏上的
来重新发布,或者在项目上点击右键选择菜单Redeploy,如图8.10 所示。之后稍等片刻就可以完成重新发布的过程。
调试JSP 应用
MyEclipse可以对Web应用里面的类或者JSP页面,Servlet进行调试。例如可以双击JSP编辑器的行首的隔条,来设置断点,然后以调试模式启动服务器。例如下面是访问index.jsp时的调试透视图界面,我们可以修改变量值b为4(被修改过的值以本人允荆??缓蟮慊鱀ebug视图的
Resume按钮来继续往下执行,就可以看到最终的执行结果是5。如下图所示:
图 8.11 修改变量跟踪调试JSP 页面
这里用的 index.jsp 页面的源码清单如下所示:
清单 8.10 用来调试的JSP 页面源码
使用调试器可以很方便的快速定位出现问题的地方,加快修改代码的速度。
向现有Web 项目添加Web 开发功能
如果拿到了一个其它开发工具例如 WTP,Netbeans,JBuilder 等所制作的Web 项目,而不是通过MyEclipse 所创建的Web 项目,那么MyEclipse 将会拒绝对它进行发布,调试等操作。这种情况下可以从 MyEclipse 菜单栏选择MyEclipse > Project Capabilities >Add Web Project Capabilities ... 来启动MyEclipse Web Capabilities 向导,如下图示:
图 8.12 MyEclipse Web 项目向导
在这个对话框中选中 Web 项目的根目录,点击Web Root Directory 最右侧的Browse...按钮来选中,之后设置上下文访问路径(Web Context Root),并选择合适的Java EE 版本(J2EE Specification Level)后,点击Finish 按钮后就给当前项目加入了Web 开发功能了,之后就可以方便的对它进行发布等操作。
高级设置
本节内容仅供了解,大部分情况下都不需要对这些内容进行修改。
修改Web 项目的默认设置
选择菜单 Window > Preferences,打开Preferences 对话框,在选项树上选择MyEclipse > Java Enterprise Project > Web Project,来进一步设置Web 项目的默认设置,如下图所示:
图 8.13 修改Web 项目的默认设置
在 Template 标签页可以设置Web 项目的模版,包括默认的源代码目录名以及Web 应用根目录的名称。而在Build Path 标签页,则可以设置是否自动将WEB-INF/lib 下面的jar 或者zip 文件发布到服务器上。Deployment 标签则设置了当项目存在依赖的时候如何进行发布。Tag Libraries 标签则可以修改一些自定义的标签库的快速代码段。
除此之外,还可以对单个项目的Web功能进行设置。点击菜单Project > Properties可以打开项目的属性对话框,这时候可以点击MyEclipse > Web节点进行一些必要的设置,如图8.14 所示。如果修改了值Web Context-root,例如它的值修改为ABC,那么这个项目再次发布时,将会发布到Tomcat安装目录/webapps/ABC下面,对应应用的访问地址也会改为。如果复制Web Project来进行开发,往往会出现多个项目发布到Tomcat的webapps下面同一个目录下的问题,这时就可以修改这个属性的值来解决问题。
给Web 项目加入高级功能
在实际开发中不可避免的要在 Web 项目中使用Hibernate,Struts,Spring 等技术,那么这些都可以通过点击菜单MyEclipse > Project Capabilities 然后选择需要使用的技术,就可以将对应的类库和配置文件加入到当前项目中。例如要开发Struts 和Hibernate 应用,分别点击两次子菜单Add Struts Capabilities 和Add Hibernate Capabilities 就可以了。如下图所示:
小结
在本文我们介绍了如何开发,发布,运行,测试,调试 Web 应用,这些概念适用于以后所介绍的其它基于Web 的项目例如Struts,JSF 等等。通过本章,你将对如何使用MyEclipse 如何开发Web 项目有一个大致的了解,并为使用后续复杂的Web 框架进行开发打好基础。
*注:本文转自http://liuye066.iteye.com/blog/1114811