您的位置:首页 > 理论基础 > 计算机网络

在NetBeans中使用MySQL创建简单Web应用程序(一) (http://blog.csdn.net/java060515/archive/2007/06/19/1658316.aspx)

2007-07-31 21:46 951 查看
本文介绍了如何创建与MySQL数据库连接的简单、分布式Web应用程序。此外,本文还涉及Web开发的一些基本想法和技术,如JavaServerPages和三层架构,我们会在构造Web应用程序时详细介绍。本教程专为基本了解Java编程和Web开发,并渴望实践所学知识的初学者设计。
作为一种流行的开放源数据库管理系统,MySQL凭借其速度、灵活性和可靠性方面的优势普遍用于Web应用程序中。MySQL采用SQL或StructuredQuery语言,访问并处理数据库中包含的数据。
本教程是ConnectingtoaMySQLDatabase教程的继续。本教程假设您已在NetBeansIDE中创建并配置了到MySQL数据库的连接。您还需要ifpwafcad.sql中包括的数据库表数据。该SQL文件创建了两个表,counselors和subjects,然后使用样例数据填充它们。将该文件保存到本地目录中,然后在NetBeans中打开它并在您的MySQL数据库中运行它。在本文中,我们工作的数据库命名为test。

预计持续时间:40分钟

本教程将介绍以下主题:
l获得软件
l规划结构
l创建一个新项目
l准备Web页面
l部署到服务器
l实现数据层
l实现逻辑层
l实现演示层
l下一步

获得软件

开始之前,确保您在计算机上安装了如下软件:
lNetBeansIDE5.5
lJavaSEDevelopmentKit(JDK™)version5.0或更高版本
lMySQL数据库
lJDBCDriverforMySQL
lSunJavaSystemApplicationServer
注意本教程中未严格要求使用SunJavaSystemApplicationServer(SJSAS),因为您可以使用Tomcat,它是与NetBeansIDE绑定的Web服务器。然而,如果您计划在IDE中开发应用程序,那么应用程序服务器会提供很多工具和技术支持,使开发人员的工作更轻松。

规划结构

简单的Web应用程序通常采用三层架构设计,其中的用户界面、功能流程逻辑和数据访问与存储均可独立地进行维护。换句话说,这三层的每一层代表了可在自己平台上运行的模块(因此使用术语“分布式”)。

对于本教程中构建的应用程序而言,演示层或用户界面由JSP页面表示,这些页面用来准备发送给客户端浏览器的HTML。我们可以使用几个简单的Java类来编码中间层或逻辑层。最后,可以使用MySQL数据库中的几个表实现数据层。考虑以下的客户端服务器场景:

浏览器中显示的欢迎页面(index.jsp)包含一个简单窗体,允许访问者指定数据。当一个请求传递到包含数据的服务器时,开始访问JSP页面(response.jsp),该页面可立即将指定数据传递给SubjectCounselor.java,这样信息检索流程可以开始了。Java类处理数据并利用AccessDB.java准备发送给数据库的SQL查询。然后,AccessDB.java与数据库连接,按照SQL查询指定的内容,从subjects和counselors表中检索数据。最后,启动返回行程,response.jsp中包含的检索到的数据形成了服务器对客户端的响应。

创建一个新项目

为了实现上述场景,我们为名为IFPWAFCAD的虚拟组织或者国际前职业摔跤手咨询与发展联盟开发一个简单的应用程序。利用该应用程序,用户可以从下拉列表(index.jsp)中选择咨询主题,然后从MySQL数据库中检索数据并将信息返回给用户(response.jsp):
index.jsp
response.jsp


让我们首先在IDE中创建一个新项目:

激活NetBeansIDE并从File菜单中选择NewProject(Ctrl+Shift+N)。在Categories下选择Web;并在Projects下选择WebApplication。单击Next。

在ProjectName中,输入IFPWAFCAD。从Server下拉列表中选择你计划使用的服务器。就我们的目的而言,保留所有其他设置为默认值即可,然后单击Finish。

注意如果您下载了SJSAS但是没有在NetBeansIDE中注册它,可以通过单击Server下拉列表右边的Manage按纽轻松注册它。ServerManager打开,使您能够注册新的服务器。有关更多信息,请参见IDE的HelpContents(F1)中的RegisteringaSunJavaSystemApplicationServerInstance。

IDE为整个应用程序创建一个项目模板,并在SourceEditor中打开一个空白JSP页面(index.jsp)。要更好的了解项目模板的结构,请参见IDE的HelpContents(F1)中的AboutStructuringWebSourceFiles。

准备Web页面

应用程序的演示层包括两个JSP页面:欢迎页面和将指定数据返回给用户的响应页面。我们可以首先为这两个页面创建占位符。这意味着,现在将添加HTML,然后一旦实现了逻辑层就添加特定于JSP的代码。

实现欢迎页面

让我们首先将index.jsp转换到IFPWAFCAD的欢迎页面:

确保在SourceEditor中打开了index.jsp。如果没有打开,从Projects窗口的IFPWAFCAD>WebPages>index.jsp中双击它。然后在SourceEditor中将标题更改为IFPWAFCADHomepage。

现在,使用以下代码替换主体部分:

<body>

<br>

<h2align="center">WelcometoIFPWAFCAD,theInternationalFormerProfessional

<br>Wrestlers'AssociationforCounselingandDevelopment!</h2>


<br><br>

<tablewidth="55%"align="center">

<tr>

<td><strong>IFPWAFCADoffersexpertcounselinginawiderangeoffields.</strong></td>

</tr>

<tr>

<td><br>ToviewthecontactdetailsofanIFPWAFCADcertifiedformer

<br>professionalwrestlerinyourarea,selectasubjectbelow:</td>

</tr>

<tr>

<td>

<formaction="response.jsp"method="post">

<br>

<strong>Selectasubject:</strong>

<selectname="subject_id"size="1">

<optionvalue="1">MarriageGuidance</option>

<optionvalue="2">FinancialConsultancy</option>

</select>

<inputtype="submit"name="submit"value="submit">

</form>

</td>

</tr>

</table>

</body>



这基本上在表内创建了一个简单的窗体。随后,当我们实现JSP代码时,将使用直接从数据库中获得所有主题名称的循环替换样例主题。此外,注意窗体提交给我们将要创建的response.jsp页面。

实现响应页面

要创建response.jsp的占位符,执行以下操作:

在Projects窗口中右键单击IFPWAFCAD项目节点,并选择New>JSP....。NewJSPFile对话框打开。

在JSPFileName字段中,输入response。注意Location字段当前选择了WebPages,意味着将在与欢迎页面相同的目录中创建该文件。

接受所有其他默认值并单击Finish。生成新response.jsp页面的模板且该模板在SourceEditor中打开。新的JSP节点还显示在Projects窗口中的WebPages下:

现在,在SourceEditor中将该文件标题更换为更有意义的标题,如“(ChosenSubject)”。

下一步,用以下代码替换模板主体部分:

<body>

<br>

<h2align="center">(ChosenSubject)</h2>

<br>

<tablewidth="60%"align="center"cellpadding="10">

<tr>

<tdvalign="top"width="25%"><strong>Description:</strong></td>

<td><em>(subjectdescription)</em><br></td>

</tr>

<tr>

<tdvalign="top"><strong>Counselor:</strong></td>

<td><spanstyle="font-size:large"><strong>(counselor'sname)</strong></span>

<br><spanstyle="align:center">

<em>membersince:(adate)</em></span></td>

</tr>

<tr>

<tdvalign="top"><strong>ContactDetails:</strong></td>

<td><strong>email:</strong><ahref="mailto:<(anemailaddress)>"><(anemailaddress)></a>

<br><strong>phone:</strong><(atelephonenumber)></td>

</tr>

</table>

</body>



一旦我们在JSP中编码,就会为将要生成的输出创建一个HTML模板。注意,上面所有括号中的字段都可以通过访问数据层动态生成。

部署到服务器

要了解应用程序在用户那看起来是怎样的,我们需要部署目前所得到的应用程序到Web服务器,以便在浏览器上看到页面。注意我们的JSP页面尚未包含任何JSP代码,因此您现在可以简单地更改扩展名为.htm,然后在浏览器中单独打开它们。然而,我们需要Web服务器编译JSP代码以及逻辑层的Java类,因此也可能开始使用Web服务器。
无论您正在运行NetBeansIDE捆绑的Tomcat还是SJSAS,一旦在IDE中注册了服务器,部署应用程序的过程是相同的。如果需要对IDE中的服务器设置进行任何更改,请从主菜单中选择Tools>ServerManager打开ServerManager。
要部署应用程序到服务器:

从Projects窗口中,右键单击项目节点,并选择DeployProject。NetBeansIDE自动启动服务器(如果它尚未启动)、编译然后将项目部署到服务器。您可以看到在Output窗口生成的任何输出。该输出应该以BUILDSUCCESSFUL消息作为结束。

要检查应用程序的确被部署到了服务器中,打开Runtime窗口(Ctrl+5)并展开Servers节点。在此列出IDE中注册的服务器。对于Tomcat而言,要展开WebApplications,查看在服务器上编译的IPFWAPCAD应用程序。对于SJSAS而言,要展开Applications>WebApplications查看该应用程序。

要运行项目,返回到Projects窗口,从项目节点右键单击菜单中选择RunProject。index.jsp页面在IDE的默认浏览器中打开。

提示:如果我们简单地选择了RunProject作为开始,那么在浏览器中打开该应用程序之前,它将已经被自动编译和部署到服务器中了。

实现数据层

在考虑为中间逻辑层编码之前,先准备好数据层。这可以容易地分成几个简单的子任务:
1.在NetBeansIDE中准备数据库
2.设置JDBC连接池
3.引用应用程序中的JDBC资源
4.将数据库驱动的JAR文件添加到服务器中

在NetBeansIDE中准备数据库

完成与MySQL数据库连接教程之后,您将已经拥有一个与IDE中注册的MySQL数据库的连接。应该还有两个表,counselors和subjects,包含ifpwafcad.sql中生成的样例数据。

设置JDBC连接池

为了指定Web服务器允许的应用程序与数据库通信的方式,我们需要设置一个数据库连接池。数据库连接池基本上就是一组可重用连接,服务器使用它维护特定数据库。请求与服务器连接的Web应用程序从该池中获得连接。当应用程序关闭连接时,连接返回池中。
为了在服务器上设置连接池,我们需要创建一个JDBC资源(也称数据资源)。JDBC资源为应用程序提供到数据库的连接。根据您使用的是Tomcat还是SJSAS,执行以下操作:

捆绑的TomcatWebServer

通过展开Servers>BundledTomcat>WebApplications节点,从Runtime窗口中访问TomcatAdministration工具(如有必要,从服务器节点的右键单击菜单中选择Start先启动服务器)。然后右键单击/admin节点并选择OpeninBrowser。登录页面在IDE的默认浏览器中打开。

为已经指定为“管理员”角色的用户,输入用户名和密码。如果需要验证该信息,可以检查位于服务器基目录的conf文件夹中的tomcat-users.xml文件。可以通过打开ServerManager(Tools>ServerManager)找出基目录,从左侧窗格中选择Tomcat并查看Connection选项卡下CatalinaBase字段中输入的内容。



一旦登录,从左列中选择Resources>DataSources。在显示的主窗口中,从DataSourceActions下拉菜单中选择CreateNewDataSource。在相应字段中输入以下值:

mJNDIName:jdbc/connectionPool
mDataSourceURL:jdbc:mysql://localhost:3306/test
mJDBCDriverClass:com.mysql.jdbc.Driver
mUserName:root
mPassword:nbuser

要更好的了解此处执行的操作,请参见IDE的HelpContents(F1)中的AboutConnectionPools。

确定您输入的值与下面屏幕截图中的值一致后,单击Save。然后单击CommitChanges,最后单击LogOut。


SunJavaSystemApplicationServer

在SJSAS上设置JDBC连接池略微容易一些,因为可以完全在NetBeansIDE中完成该设置:

在Projects窗口中,右键单击该项目节点,并选择New>File/Folder....。在Categories下选择SunResources,在FileTypes下选择JDBCResource。单击Next。

在GeneralAttributes窗格中,选择CreateNewJDBCConnectionPool单选按纽,然后在JNDIName下输入jdbc/connectionPool。保留所有其他设置为默认值并单击Next。然后在AdditionalProperties窗格中再次单击Next。

在ChooseDatabaseConnection窗格中,注意根据我们以上指定的JNDI名称自动提供连接池名称。确保选择ExtractfromExistingConnection单选按纽,然后从下拉列表中选择我们正在使用的数据库连接(jdbc:mysql://localhost:3306/test)。单击Next。

在AddConnectionPoolProperties窗格中,保留所有其他设置为默认值并单击Finish。在项目中创建新的数据源和连接池。您可以通过展开ServerResources节点验证这个操作,查看我们刚创建的数据源和连接池:

虽然我们刚在项目中创建了数据源和连接池,但仍需要使用应用程序服务器注册它们。执行以下操作:

从数据源和连接池节点的右键单击菜单中选择Register。在显示的JDBCResourceRegistration对话框中,单击Register,然后单击Close。

要验证的确在服务器上创建了JDBC资源和连接池,可以切换到Runtime窗口并从SunJavaSystemApplicationServer节点右键单击菜单中选择ViewAdminConsole。Administration登录页面在IDE的默认浏览器中打开。

登录到控制台(默认情况下,用户名和密码为:admin,adminadmin)。从左列中选择Resources,然后在主窗口中单击JDBC。

现在,当您展开JDBCResources和ConnectionPools页面时,应该看到新建的数据源(jdbc/connectionPool)和连接池(connectionPool)。

引用应用程序中的JDBC资源

我们现在需要从Web应用程序中引用刚创建的JDBC资源。这意味着必须访问Web应用程序的通用部署描述符(Web.xml),以及所使用服务器的特定于服务器的部署描述符(Tomcat的context.xml;SJSAS的sun-Web.xml)。
部署描述符是一种XML文档,这些文档包含描述应用程序部署方式的信息。例如,它们通常用于指定servlets和JSP文件的位置和可选参数,并且为您的应用程序实现基本安全功能。有关更多信息,请参见IDE的HelpContents(F1)中的ConfiguringWebApplicationDeploymentDescriptors。
要引用通用部署描述符中的JDBC资源:

在Projects窗口中,展开WebPages>WEB-INF子文件夹,然后双击Web.xml。SourceEditor中显示该文件的图形编辑器。

单击位于SourceEditor旁的References选项卡。展开ResourceReferences标题,然后单击Add....打开AddResourceReference对话框。

对于ResourceName,输入我们为以上服务器(jdbc/connectionPool)添加数据源时给出的JNDI名称。对于Description,输入数据源URL(jdbc:mysql://localhost:3306/test)。保留所有其他字段为默认值,然后单击OK。新资源即被添加到ResourceReferences标题下。



要验证现在添加给Web.xml文件的资源,单击位于SourceEditor顶部的XML选项卡,您将会看到以下<resource-ref>标记包含在内:

<resource-ref>

<description>jdbc:mysql://localhost:3306/test[rootonDefaultschema]</description>

<res-ref-name>jdbc/connectionPool</res-ref-name>

<res-type>javax.sql.DataSource</res-type>

<res-auth>Container</res-auth>

<res-sharing-scope>Shareable</res-sharing-scope>

</resource-ref>



现在,根据您使用的是Tomcat还是SJSAS,执行以下操作,引用特用于服务器的部署描述符中的JDBC资源:

捆绑的TomcatWebServer

在Projects窗口中,展开WebPages>META-INF子文件夹,然后双击context.xml。文件显示在SourceEditor中。

添加以下<ResourceLink>标记,然后保存文件(以粗体显示更改):

<?xmlversion="1.0"encoding="UTF-8"?>

<Contextpath="/IFPWAFCAD">

<ResourceLinkglobal="jdbc/connectionPool"name="jdbc/connectionPool"type="javax.sql.DataSource"/>

</Context>


SunJavaSystemApplicationServer

在Projects窗口中,展开WebPages>WEB-INF子文件夹,然后双击sun-Web.xml。SourceEditor中显示该文件的图形编辑器。

单击编辑器右上角的EditAsXML。文件以XML格式显示。现在,在文档中输入以下<resource-ref>标记,例如,接着结尾的</jsp-config>标记输入:

<resource-ref>

<res-ref-name>jdbc/connectionPool</res-ref-name>

<jndi-name>jdbc/connectionPool</jndi-name>

</resource-ref>


将数据库驱动的JAR文件添加到服务器中

添加数据库驱动的JAR文件是实现服务器与数据库通信的不可缺少的另一步。您需要找到数据库驱动的安装目录。如果是继续与MySQL数据库连接教程的学习,将使用安装到您计算机C:/中的MySQLConnector/J。在驱动根目录中复制mysql-connector-java-5.0.5-bin.jar文件,并根据使用的是Tomcat还是SJSAS执行以下操作:

捆绑的TomcatWebServer

l粘贴JAR文件到Tomcat的common/lib子文件夹中。默认情况下,在IDE的安装目录的enterprise子文件夹内可以找到服务器。如果已经启动服务器,确保在粘贴了JAR文件后重启它,使服务器能够加载它。

SunJavaSystemApplicationServer

l找到SJSAS的安装目录并粘贴JAR文件到服务器的domains>domain1>lib>ext子文件夹中。例如,如果将服务器安装到C:/,则路径为:C:/Sun/AppServer/domains/domain1/lib/ext。在NetBeansIDE中与SJSAS连接时,您实际是与应用程序服务器的实例连接。每个实例都在一个唯一的域中运行应用程序,因此我们需要在domain1中放置JAR文件,domain1是安装SJSAS时创建的默认域。如果已经启动服务器,确保在粘贴了JAR文件后重启它,使服务器能够加载它。

Trackback:http://tb.blog.csdn.net/TrackBack.aspx?PostId=1658316
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: