﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-linansengling-随笔分类-JAVA</title><link>http://www.blogjava.net/linansengling/category/15124.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 10:39:09 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 10:39:09 GMT</pubDate><ttl>60</ttl><item><title>java 实现分页技术(Structs+Hibernate+MySQL)</title><link>http://www.blogjava.net/linansengling/archive/2006/09/21/70960.html</link><dc:creator>周先有</dc:creator><author>周先有</author><pubDate>Wed, 20 Sep 2006 16:42:00 GMT</pubDate><guid>http://www.blogjava.net/linansengling/archive/2006/09/21/70960.html</guid><wfw:comment>http://www.blogjava.net/linansengling/comments/70960.html</wfw:comment><comments>http://www.blogjava.net/linansengling/archive/2006/09/21/70960.html#Feedback</comments><slash:comments>20</slash:comments><wfw:commentRss>http://www.blogjava.net/linansengling/comments/commentRss/70960.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/linansengling/services/trackbacks/70960.html</trackback:ping><description><![CDATA[
		<p>    通过Structs+Hibernate+MySQL数据数来实现分页技术的应用. <br />    <br /> <a href="/Files/linansengling/pagenavitaionsource.rar" target="_blank">  源程序下载</a><br />   至于Hibernate, Structs, MySQL的具体用法我就不说了,你可以看源程序来查看详细内容.我们来看看分页应用的相关内容.<br /> 架构上和Spring JPetStore没多少区别, 只是没用Spring框架所以Structs中的UserdisplayAction中必须new出各个对象并完成它们之间的关联, 这就是Spring IOC可自动完成的功能. 它也是三层:表现层(Structs), 业务层(POJO), 数据层(Hibernate访问MySQL). 同样业务层通过DAO接口(UserDAO)来访问数据库, 访问数据库的通过Hibernate(在UserDAOImpl中实现). 这一次分页要在业务层中来实现, 业务层同样向表现层提供一个Facada(门面,  UserManager接口), 来访问业务. 在UserManagerImpl中通过调用UserDAO来访问数据, 调用POJO来实现分页功能. 看以下关键代码.<br /><br />先看POJO的分布类吧:<br /><br /><font color="#009900" size="5">Page.java<br /></font><br /><font color="#cc00ff">package org.flyware.util.page;</font></p>
		<p>
				<font color="#cc00ff">public class Page { <br />    <br />   <font color="#ff0000"> private boolean hasPrePage; <br />    <br />     private boolean hasNextPage; <br />        <br />    private int everyPage; <br />    <br />    private int totalPage; <br />        <br />    private int currentPage; <br />    <br />      private int beginIndex; <br /></font>    <br />    <br />      public Page(){ <br />        <br />    } <br />    <br />        public Page(int everyPage){ <br />        this.everyPage = everyPage; <br />    } <br />    <br />    /** The whole constructor */ <br />    public Page(boolean hasPrePage, boolean hasNextPage,  <br />                    int everyPage, int totalPage, <br />                    int currentPage, int beginIndex) { <br />        this.hasPrePage = hasPrePage; <br />        this.hasNextPage = hasNextPage; <br />        this.everyPage = everyPage; <br />        this.totalPage = totalPage; <br />        this.currentPage = currentPage; <br />        this.beginIndex = beginIndex; <br />    } </font>
		</p>
		<p>
				<font color="#cc00ff">      ......    <br />      <br />   public int getTotalPage() { <br />        return totalPage; <br />    } <br />   <br />    public void setTotalPage(int totalPage) { <br />        this.totalPage = totalPage; <br />    } <br />    <br />}</font>
		</p>
		<p>
				<font size="5">
						<font color="#009900">PageUtil.java(用来构造Page实例 相当于page工厂)</font>
						<br />
				</font>
				<br />
				<font color="#cc00ff">package org.flyware.util.page;</font>
		</p>
		<p>
				<font color="#cc00ff">public class PageUtil { <br />    <br />    private static final Log logger = LogFactory.getLog(PageUtil.class); <br />    <br />       public static Page<font color="#ff0000"> createPage</font>(Page page, int totalRecords){ <br /><br />        return createPage(page.getEveryPage(), page.getCurrentPage(), totalRecords); <br />    } <br />    <br />        public static <font color="#ff0000">Page createPage</font>(int everyPage, int currentPage, int totalRecords){ <br />        everyPage = getEveryPage(everyPage); <br /><br />        currentPage = getCurrentPage(currentPage); <br /><br />        int beginIndex = getBeginIndex(everyPage, currentPage); <br /><br />        int totalPage = getTotalPage(everyPage, totalRecords); <br /><br />        boolean hasNextPage = hasNextPage(currentPage, totalPage); <br /><br />        boolean hasPrePage = hasPrePage(currentPage); <br />        <br />        return new Page(hasPrePage, hasNextPage,  <br />                                everyPage, totalPage, <br />                                currentPage, beginIndex); <br />    } <br />    <br />    private static int getEveryPage(int everyPage){ <br />        return everyPage == 0 ? 10 : everyPage; <br />    } <br />    <br />    private static int getCurrentPage(int currentPage){ <br />        return currentPage == 0 ? 1 : currentPage; <br />    } <br />    <br />    private static int getBeginIndex(int everyPage, int currentPage){ <br />        return (currentPage - 1) * everyPage; <br />    } <br />        <br />    private static int getTotalPage(int everyPage, int totalRecords){ <br />        int totalPage = 0; <br />                <br />        if(totalRecords % everyPage == 0) <br />            totalPage = totalRecords / everyPage; <br />        else <br />            totalPage = totalRecords / everyPage + 1 ; <br />                <br />        return totalPage; <br />    } <br />    <br />    private static boolean hasPrePage(int currentPage){ <br />        return currentPage == 1 ? false : true; <br />    } <br />    <br />    private static boolean hasNextPage(int currentPage, int totalPage){ <br />        return currentPage == totalPage || totalPage == 0 ? false : true; <br />    } <br />    </font>
		</p>
		<p>
				<font color="#cc00ff">} <br /><br /><br /><br /><font color="#009900" size="5">业务实现类 UserManaerImpl.java</font><br /><br />package com.linan.service.impl;</font>
		</p>
		<p>
				<font color="#cc00ff">public class UserManagerImpl implements UserManager { <br />    <br />    private <font color="#ff0000">UserDAO userDAO</font>; </font>
		</p>
		<p>
				<font color="#cc00ff">       public void setUserDAO(UserDAO userDAO) { <br /><br />        this.userDAO = userDAO; <br /><br />    } <br />  <br />//提供业务方法<br /><br />public <font color="#ff0000">Result listUser</font>(Page page) throws HibernateException, <br /><br />ObjectNotFoundException { <br /><br />        int totalRecords = userDAO.getUserCount(); <br /><br />        if(totalRecords == 0) <br /><br />            throw new ObjectNotFoundException("userNotExist", null);<br /> <br />        page = PageUtil.createPage(page, totalRecords); <br /><br />        <font color="#ff0000">List users = userDAO.getUserByPage(page);</font>   <br />   <br />        return new Result(page, users); <br /><br />    } </font>
		</p>
		<p>
				<font color="#cc00ff">} <br /><br /><br /><font color="#009900" size="5">DAO数据访问实现类 UserDAOImpl.java</font><br /><br />package com.linan.dao.impl;</font>
		</p>
		<p>
				<font color="#cc00ff">public class UserDAOImpl  implements UserDAO { </font>
		</p>
		<p>
				<font color="#cc00ff">  ...........</font>
		</p>
		<p>
				<font color="#cc00ff">      public List getUserByPage(Page page) throws HibernateException { <br /><br />        String querySentence = "FROM user in class com.linan.bo.Userlist"; <br /><br />        Query query = getSession().createQuery(querySentence); <br /><br /><font color="#ff0000">         //实现分页功能<br /><br /></font>        query.setFirstResult(<font color="#ff0000">page.getBeginIndex())</font> <br /><br />                .setMaxResults(<font color="#ff0000">page.getEveryPage());</font> <br /><br />        return query.list(); <br /><br />    } <br /></font>
		</p>
		<p>
				<font color="#cc00ff">} </font>
		</p>
		<p>
				<font color="#cc00ff">
						<font color="#009900" size="5">表现层Structs中的Action UserdisplayAction.java</font>
						<br />
						<br />
				</font>
				<font color="#cc00ff">package com.linan.struts.action;</font>
		</p>
		<p>
				<font color="#cc00ff">public class UserdisplayAction extends Action {</font>
		</p>
		<p>
				<font color="#cc00ff"> </font>
				<font color="#cc00ff"> public ActionForward execute(<br />  ActionMapping mapping,<br />  ActionForm form,<br />  HttpServletRequest request,<br />  HttpServletResponse response) {</font>
		</p>
		<p>
				<font color="#cc00ff">   Page page=new Page(); <br /><br />        UserManagerImpl userManager=new UserManagerImpl();<br /><br />        UserDAOImpl userDAO=new UserDAOImpl();<br /><br />        userManager.setUserDAO(userDAO);<br /><br />      <font color="#ff0000"> //掉用业务代理完成分页<br /></font><br />        Result result=<font color="#ff0000">userManager.listUser(page);<br /></font><br />        List list=result.getContent();<br /><br />        HttpSession session=request.getSession();<br /><br />        session.setAttribute("list",<font color="#ff0000">list</font>);<br /><br />  return mapping.findForward("displayGo");<br /><br /> }</font>
		</p>
		<p>
				<font color="#cc00ff">}</font>
		</p>
		<p>
				<font color="#cc00ff">
						<br /> </font>
		</p>
<img src ="http://www.blogjava.net/linansengling/aggbug/70960.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/linansengling/" target="_blank">周先有</a> 2006-09-21 00:42 <a href="http://www.blogjava.net/linansengling/archive/2006/09/21/70960.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring JPetStore(三) 实现自已的Sunlight Netstore</title><link>http://www.blogjava.net/linansengling/archive/2006/09/19/70625.html</link><dc:creator>周先有</dc:creator><author>周先有</author><pubDate>Tue, 19 Sep 2006 13:56:00 GMT</pubDate><guid>http://www.blogjava.net/linansengling/archive/2006/09/19/70625.html</guid><wfw:comment>http://www.blogjava.net/linansengling/comments/70625.html</wfw:comment><comments>http://www.blogjava.net/linansengling/archive/2006/09/19/70625.html#Feedback</comments><slash:comments>18</slash:comments><wfw:commentRss>http://www.blogjava.net/linansengling/comments/commentRss/70625.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/linansengling/services/trackbacks/70625.html</trackback:ping><description><![CDATA[
		<p>     看过了Spring JPetStore自已觉得界面有点不好看, 我觉得界面在购物网站建设中还是重要的. 所以在Spring  JPetStore基础上我用Structs的Title框架对原系统做了一定的改变形成了自己的"阳光网店"(Sunlight NetStore), 现在贴出来和大家分享, 大虾见了请别见笑, 还请多多指教, 学生的作品, 都没多少实用性, 只是学了一些东西来练练手.<br /><br /><a href="/Files/linansengling/sunshinenetstoresource.rar" target="_blank">Sunlight NetStore源码下载</a><br /><br />下载的源程序是Eclipse下完成的工程源程序,可以在Eclipse下只接导入进来打开完成发布.  也可以在tomcat安装目录\webapps目录下新建一文件夹jpetstore然后把下载下来的WebRoot目录下的所有内容都拷过去.  数据库的建立, 我开发时使用的是mysql4.0(如果你用的是mysql5.0则可能有时会出错, 5.0是它的测试版我用了感觉有时会出现莫明其妙的错误,还以为是程序错误, 费了我好多时间, 而4.0是它的发布版很稳定的). 使用mysql你可以配合使用MySQL Control Center(mysql4.0, MySQL Control Center可以网上下载Google一下吧这里就不提供下载地址了)很好用的和微软的SQL Server差不多. 在MySQL Control Center中执行数据库脚本, 然后启动tomcat服务器. 你将看到如下:  (开发使用的技术是Structs里面的东东, 就不说了. 架构, 业务层和数据层和原来的不变,<a title="spring jpetstore(二)" href="/linansengling/archive/2006/09/19/70625.html"> 想了解请看Spring JPetStore(二) Spring JPetStore的分析</a>)              <br />                                                                                                                                  <br /></p>
		<p align="center">
				<img style="WIDTH: 630px; HEIGHT: 582px" height="768" alt="index1.jpg" src="http://www.blogjava.net/images/blogjava_net/linansengling/index1.jpg" width="1024" border="0" />
		</p>
		<p>
				<br />
				<br />
		</p>
		<p align="center">
				<img style="WIDTH: 623px; HEIGHT: 1232px" height="1364" alt="index3.jpg" src="http://www.blogjava.net/images/blogjava_net/linansengling/index3.jpg" width="1024" border="0" />
		</p>
		<p>            <br /><br /></p>
		<p align="center">
				<img style="WIDTH: 627px; HEIGHT: 587px" height="764" alt="dog.jpg" src="http://www.blogjava.net/images/blogjava_net/linansengling/dog.jpg" width="1024" border="0" />
		</p>
		<p>  </p>
		<p align="center">
				<img style="WIDTH: 624px; HEIGHT: 675px" height="764" alt="data.jpg" src="http://www.blogjava.net/images/blogjava_net/linansengling/data.jpg" width="1024" border="0" />
		</p>
<img src ="http://www.blogjava.net/linansengling/aggbug/70625.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/linansengling/" target="_blank">周先有</a> 2006-09-19 21:56 <a href="http://www.blogjava.net/linansengling/archive/2006/09/19/70625.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring JPetStore(二)  JPetStore的分析</title><link>http://www.blogjava.net/linansengling/archive/2006/09/17/70122.html</link><dc:creator>周先有</dc:creator><author>周先有</author><pubDate>Sun, 17 Sep 2006 04:16:00 GMT</pubDate><guid>http://www.blogjava.net/linansengling/archive/2006/09/17/70122.html</guid><wfw:comment>http://www.blogjava.net/linansengling/comments/70122.html</wfw:comment><comments>http://www.blogjava.net/linansengling/archive/2006/09/17/70122.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/linansengling/comments/commentRss/70122.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/linansengling/services/trackbacks/70122.html</trackback:ping><description><![CDATA[
		<p>  Spring JPetStore总体架构属于三层结构. 分为业务服务层  表现层  数据访问层<br />  <br />       业务服务层使用由POJO(java类)实现, 它们运行在轻量级的容器Spring中. 轻量级容器的功能在于, 一 管理业务对象的生命周期. 二 借助于Spring 的IOC(Inversion of Control, 控制反转)功能来完成对象之间的依赖关系, 而不用编程一显示完成. 三 借助于Spring的AOP(Aspect-Oriented Programming, 面向方面的程序设计) 为运行在容器中的对象提供一些企业服务, 比如声明式的事务管理. 业务层放弃了EJB而使用运行在轻量级容器的服务层, 会有以下好处:<br />1.  能够在Servlet引擎中运行. 不用EJB容器的服务器, tomcat就能搞定, 软件的费用低, 容易管理, 负载小.<br />2 . 容易在不同的应用服务器或serverlet引擎之间移植. 要想达到高可移植性, 对于EJB容器来说要比web容器困难, 比如, 就需要确保不同的EJB容器在启动时都会运行某一些代码.<br />3.  实现更为简单.<br />4. 不需要那么累赘的部署文件.<br />不好的地方:<br />1.  缺乏对远程调用的内置支持.<br />2.  缺乏一个标准的环境, 用于容纳, 管理业务对象.<br />3.  没有清晰的业务层.<br />4.  在不同的应用系统之间缺乏一致性, 第个系统都可能会有自己的一套做法: 怎么访问业务对象 怎么解决事务管理 怎么访问数据等.<br />虽然如此但现在我们有了spring一切就有了解决之道了.<br /><br />      表现层中, Spring JPetStore提供了两种不同的web层实现, 二者都要依靠同一个中间层, 一个是基于Structs的,另一个则是Spring的MVC框架. 二者都是基于JSTL的JSP视图.<br /><br />      数据访问层,使用了J2EE模式中的"数据访问对象"(Data Access Object, DAO), 他用一个DAO接口隐藏了持久化操作的细节, 这样使用这个模式的业务对象无需知道底层的持久化技术的细节. Spring JPetStore中使用了iBATIS框架.<br /><br />下面让我们来看一下应用中的细节内容吧, 先在Eclipse下把应用加进来方便调试, 运行.<br /><br />Eclipse可到(<a href="http://www.eclipse.org/downloads/">http://www.eclipse.org/downloads/</a>上下载)他是压缩包解压后就可用(可以再去下MyEclipe <a href="http://www.myeclipse.com/">http://www.myeclipse.com</a>是Eclipese的开发插件方便开发, 不过要付费可以下载它的破解文件<a href="http://jinxinxin.bokee.com/inc/myeclipse_keygens.rar">http://jinxinxin.bokee.com/inc/myeclipse_keygens.rar</a> MyEclipse的安装如果不会去Google一下吧). 好了开发工具安装后新建一工程jpetstore, 然后用..\spring-jpetstore\samples\jpetstore下的src目录复盖你的eclipse工作空间下的\jpetstore下的src目录,然后再把..\spring-jpetstore\samples\jpetstore下的war目录下的全部内容拷到你的eclipse工作空间下的\jpetstore下的WebRoot目录下复盖WEB-INF.回到eclipse下刷新工程你可看到如下:<br /><br /></p>
		<p align="center">
				<img style="WIDTH: 694px; HEIGHT: 691px" height="768" alt="e.jpg" src="http://www.blogjava.net/images/blogjava_net/linansengling/e.jpg" width="1024" border="0" />
		</p>
		<p>
				<br />
				<br />先从数据访问层说起吧, 他使用iBATIS框架来访问数据库,在..\spring-jpetstore\samples\jpetstore\db目录下有它的各种数据库的schema有hsql, mysql, oracle, postges你使用拿一种数据库是通过..\spring-jpetstore\samples\jpetstore\war\WEB-INF下的jdbc.properties来配置的.默认的是hsql数据库:<br /># Properties file with JDBC-related settings.<br /># Applied by PropertyPlaceholderConfigurer from "dataAccessContext-local.xml".<br /># Targeted at system administrators, to avoid touching the context XML files.</p>
		<p>jdbc.driverClassName=org.hsqldb.jdbcDriver<br />jdbc.url=jdbc:hsqldb:hsql://localhost:9002<br />jdbc.username=sa<br />jdbc.password=<br />要改为用mysql只要改为:<br />#jdbc.driverClassName=org.hsqldb.jdbcDriver<br />#jdbc.url=jdbc:hsqldb:hsql://localhost:9002<br />#jdbc.username=sa<br />#jdbc.password=</p>
		<p>jdbc.driverClassName=com.mysql.jdbc.Driver<br />jdbc.url=jdbc:mysql://localhost:3306/jpetstore<br />jdbc.username=root<br />jdbc.password=<br /><br />即可.业务层能过...jpetstore.dao包下的接口来访问....jpetstore.dao.ibatis包从而通过iBATIS框架访问数据库中的数据的部份代码如下:<br /><br /><font color="#cc66ff">package org.springframework.samples.jpetstore.dao;<br />public<font color="#006600"> interface</font> AccountDao {</font></p>
		<p>
				<font color="#cc66ff">  Account getAccount(String username, String password) throws DataAccessException;</font>
		</p>
		<p>
				<font color="#cc66ff">  ...........</font>
		</p>
		<p>
				<font color="#cc66ff">}<br /></font>
				<br />
				<font color="#006600">package org.springframework.samples.jpetstore.dao.ibatis;<br />public class SqlMapAccountDao extends SqlMapDaoSupport <font color="#cc66ff">implements AccountDao</font> {</font>
		</p>
		<p>
				<font color="#006600">    public Account getAccount(String username, String password) throws DataAccessException {<br />    Account account = new Account();<br />    account.setUsername(username);<br />    account.setPassword(password);<br />    return (Account) getSqlMapTemplate().executeQueryForObject("getAccountByUsernameAndPassword", account);<br />  }<br />..............<br />}<br /></font>
				<br />Account.xml<br /><br /><font color="#ff00ff">&lt;mapped-statement name="getAccountByUsernameAndPassword" result-map="result"&gt;<br />    select<br /></font>      SIGNON.USERNAME as USERID,<br />      ACCOUNT.EMAIL,<br />      ACCOUNT.FIRSTNAME,<br />      ACCOUNT.LASTNAME,<br />      ACCOUNT.STATUS,<br />      ACCOUNT.ADDR1,<br />      ACCOUNT.ADDR2,<br />      ACCOUNT.CITY,<br />      ..    <br /><font color="#ff33ff">    from ACCOUNT, PROFILE, SIGNON, BANNERDATA<br />    where ACCOUNT.USERID = #username#</font><br />      and SIGNON.PASSWORD = #password#<br />      and SIGNON.USERNAME = ACCOUNT.USERID<br />      and PROFILE.USERID = ACCOUNT.USERID<br />      and PROFILE.FAVCATEGORY = BANNERDATA.FAVCATEGORY<br />  &lt;/mapped-statement&gt;<br /><br />然后到了业务层, 业务层为表达层提供服务,操纵数据层来完成业务逻辑比如从数据库中读出客启信息传给表达层 向数据库中插入订单等.业务层还要完成对数据库操作的完整性,正确性即事务管理. 此应用是通过Spring的AOP来完成无需编程实现如下:<br /><br /><font color="#009900">dataAccessContex-local.xml</font><br /><br /><font color="#9933ff">&lt;bean id="<font color="#ff0066">dataSource</font>" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"&gt;<br />  &lt;property name="driverClassName"&gt;&lt;value&gt;<font color="#ff3366">${jdbc.driverClassName}</font>&lt;/value&gt;&lt;/property&gt;<br />  &lt;property name="url"&gt;&lt;value&gt;${jdbc.url}&lt;/value&gt;&lt;/property&gt;<br />  &lt;property name="username"&gt;&lt;value&gt;${jdbc.username}&lt;/value&gt;&lt;/property&gt;<br />  &lt;property name="password"&gt;&lt;value&gt;${jdbc.password}&lt;/value&gt;&lt;/property&gt;<br /> &lt;/bean&gt;</font></p>
		<p>
				<font color="#9933ff"> &lt;!-- Transaction manager for a single JDBC DataSource --&gt;<br />&lt;bean id="<font color="#ff3366">sessionFactory</font>" class="org.springframework.orm.<font color="#ff3333">hibernate3</font>.LocalSessionFactoryBean"&gt;<br />  &lt;property name="dataSource"&gt;<br />   &lt;ref local="dataSource" /&gt;<br />  &lt;/property&gt;<br />  &lt;property name="mappingResources"&gt;<br />   &lt;list&gt;<br />    &lt;value&gt;org/springframework/samples/jpetstore/Hibernate/Account.hbm.xml&lt;/value&gt;<br />   &lt;/list&gt;<br />  &lt;/property&gt;<br />  &lt;property name="hibernateProperties"&gt;<br />   &lt;props&gt;<br />    &lt;prop key="hibernate.dialect"&gt;org.hibernate.dialect.MySQLDialect&lt;/prop&gt;<br />    &lt;prop key="hibernate.show_sql"&gt;true&lt;/prop&gt;<br />   &lt;/props&gt;<br />  &lt;/property&gt;<br /> &lt;/bean&gt;<br /> <br /> &lt;!-- (see dataAccessContext-jta.xml for an alternative) --&gt;<br />&lt;bean id="<font color="#ff3366">transactionManager</font>" class="org.springframework.orm.hibernate3.HibernateTransactionManager"&gt;<br />  &lt;property name="sessionFactory"&gt;<br />   &lt;ref local="sessionFactory" /&gt;<br />  &lt;/property&gt;<br /> &lt;/bean&gt;</font>
		</p>
		<p>
				<font color="#9933ff"> &lt;!-- SqlMap setup for iBATIS Database Layer --&gt;<br /> &lt;bean id="sqlMap" class="org.springframework.orm.ibatis.SqlMapFactoryBean"&gt;<br />  &lt;property name="configLocation"&gt;&lt;value&gt;WEB-INF/sql-map-config.xml&lt;/value&gt;&lt;/property&gt;<br /> &lt;/bean&gt;</font>
		</p>
		<p>
				<br />
				<font color="#9933ff"> &lt;!-- ========================= DAO DEFINITIONS: IBATIS IMPLEMENTATIONS ========================= --&gt;</font>
		</p>
		<p>
				<font color="#9933ff"> &lt;bean id="<font color="#ff3366">accountDao</font>" class="org.springframework.samples.jpetstore.dao.hibdaoimp.AccountDaoImp"&gt;<br />  &lt;property name="sessionFactory"&gt;<br />   &lt;ref local="sessionFactory" /&gt;<br />  &lt;/property&gt;<br />   <br /> &lt;/bean&gt;<br />................</font>
		</p>
		<p>
				<font color="#9933ff">&lt;/beans&gt;<br /></font>
		</p>
		<p>
				<font color="#009966">applicationContex.xml<br /></font>
				<br />
				<font color="#cc33ff">&lt;bean id="<font color="#ff0033">petStoreTarget</font>" class="org.springframework.samples.jpetstore.domain.logic.<font color="#ff3300">PetStoreImpl</font>"&gt;<br />  &lt;property name="<font color="#ff0033">accountDao</font>"&gt;&lt;ref bean="<font color="#ff0066">accountDao</font>"/&gt;&lt;/property&gt;<br />  &lt;property name="categoryDao"&gt;&lt;ref bean="categoryDao"/&gt;&lt;/property&gt;<br />  &lt;property name="productDao"&gt;&lt;ref bean="productDao"/&gt;&lt;/property&gt;<br />  &lt;property name="itemDao"&gt;&lt;ref bean="itemDao"/&gt;&lt;/property&gt;<br />  &lt;property name="orderDao"&gt;&lt;ref bean="orderDao"/&gt;&lt;/property&gt;<br /> &lt;/bean&gt;</font>
		</p>
		<p>
				<font color="#cc33ff"> &lt;!-- Transactional proxy for the JPetStore primary business object --&gt;<br /> &lt;bean id="<font color="#ff0033">petStore</font>" class="<font color="#ff0066">org.springframework.transaction.interceptor.</font><font color="#ffcc66">TransactionProxyFactoryBean</font>"&gt;<br />  &lt;property name="t<font color="#ff0066">ransactionManager</font>"&gt;&lt;ref bean="transactionManager"/&gt;&lt;/property&gt;<br />  &lt;property name="target"&gt;&lt;ref local="<font color="#ff0033">petStoreTarget</font>"/&gt;&lt;/property&gt;<br />  &lt;property name="transactionAttributes"&gt;<br />   &lt;props&gt;<br />    &lt;prop key="<font color="#ff0066">insert</font>*"&gt;PROPAGATION_REQUIRED&lt;/prop&gt;<br />    &lt;prop key="update*"&gt;PROPAGATION_REQUIRED&lt;/prop&gt;<br />    &lt;prop key="*"&gt;PROPAGATION_REQUIRED,readOnly&lt;/prop&gt;<br />   &lt;/props&gt;<br />  &lt;/property&gt;<br /></font> <br />从上面的配置代码我们可看到通过Spring的IOC完成了<font color="#ff0033"><font color="#cc33ff">org.springframework.samples.jpetstore.domain.logic.</font><font color="#ff3300">PetStoreImpl<font color="#000000">等类的注入. 通过AOP用</font><font color="#ff0066">org.springframework.transaction.interceptor.</font><font color="#ffcc66">TransactionProxyFactoryBean</font></font></font><font color="#000000">来完成事务代理<br />业务层通过一个门面(facada)PetStoreFacade.java接口来为表达层提供服务:<br /><br /></font><font color="#cc00cc">package org.springframework.samples.jpetstore.domain.logic;<br /></font><font color="#9900cc">public <font color="#ff0066">interface PetStoreFacade</font> {</font></p>
		<p>
				<font color="#9900cc"> Account getAccount(String username);</font>
		</p>
		<p>
				<font color="#9900cc"> Account getAccount(String username, String password);</font>
		</p>
		<p>
				<font color="#9900cc"> void insertAccount(Account account);</font>
		</p>
		<p>
				<font color="#9900cc"> void updateAccount(Account account);</font>
		</p>
		<p>
				<font color="#000000">
						<font color="#9900cc">..........<br />}<br />用PetStoreImp.java来实现:<br /><br />package org.springframework.samples.jpetstore.domain.logic;<br /><br />public class PetStoreImpl implements PetStoreFacade, OrderService {</font>
				</font>
		</p>
		<p>
				<font color="#000000">
						<font color="#9900cc">  private AccountDao accountDao;</font>
				</font>
		</p>
		<p>
				<font color="#000000">
						<font color="#9900cc"> .........<br /></font>
				</font>
				<font color="#000000">
						<font color="#9900cc">
								<br /> public void setAccountDao(AccountDao accountDao) {<br />  this.accountDao = accountDao;<br /> }</font>
				</font>
		</p>
		<p>
				<br /> public Account getAccount(String username) {<br />    return this.accountDao.getAccount(username);<br />  }</p>
		<p>  public Account getAccount(String username, String password) {<br />  return this.accountDao.getAccount(username, password);<br />  }</p>
		<p>  public void insertAccount(Account account) {<br />  this.accountDao.insertAccount(account);<br />  }</p>
		<p>  .......<br />}<br /><br /><font color="#000000">表达层这里介绍Structs,Structs中通过PetStoreFacade接口来访问业务层:<br /><br /></font><font color="#cc00ff">package org.springframework.samples.jpetstore.web.struts;</font></p>
		<p>
				<font color="#cc00ff">public abstract class BaseAction extends Action {</font>
		</p>
		<p>
				<font color="#cc00ff">  private</font>
				<font color="#ff0066">PetStoreFacade petStore;</font>
		</p>
		<p>
				<font color="#cc00ff"> public void setServlet(ActionServlet actionServlet) {<br />  super.setServlet(actionServlet);<br />  ServletContext servletContext = actionServlet.getServletContext();<br />  WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);<br />  <font color="#ff0033">this.petStore = (PetStoreFacade) wac.getBean("petStore");<br /></font> }</font>
		</p>
		<p>
				<font color="#cc00ff"> protected PetStoreFacade getPetStore() {<br />  return petStore;<br /> }</font>
		</p>
		<p>
				<font color="#cc00ff">}<br /><br /><br /></font>
				<font color="#009900">public class SignonAction extends<font color="#cc00ff"> BaseAction</font> {</font>
		</p>
		<p>
				<font color="#009900">  public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {<br />       AccountActionForm acctForm = (AccountActionForm) form;<br />      String username = acctForm.getUsername();<br />      String password = acctForm.getPassword();<br />     <font color="#cc00ff"> Account account = getPetStore().getAccount(username, password);</font><br />.....<br />                return mapping.findForward("success");<br />    }<br /><font color="#000000">Structs框架通过struct-config.xml文来控制相关映射转发的:</font>    <br /><br />struct-config.xml       </font>
				<font color="#cc00ff">
						<font color="#009900">
								<br />&lt;action path="/<font color="#ff0066">signon</font>" type="org.springframework.samples.jpetstore.web.struts.<font color="#cc00ff">SignonAction</font>"<br />   name="accountForm" scope="request"<br />   validate="false"&gt;<br />   &lt;forward name="success" path="/<font color="#cc00ff">index.jsp</font>"/&gt;<br />  &lt;/action&gt;<br /><br /></font>
				</font>
				<font color="#000000">关于jsp就不在多说了下面再来看一下它的web.xml文件:</font>
		</p>
		<p>
				<font color="#cc00ff">  &lt;context-param&gt;<br />  &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt;<br />  &lt;param-value&gt;<br />   <font color="#ff0066">/WEB-INF/dataAccessContext-local.xml  /WEB-INF/applicationContext.xml</font><br />  &lt;/param-value&gt;<br />   &lt;/context-param&gt;<br /><br />&lt;servlet&gt;<br />  &lt;servlet-name&gt;context&lt;/servlet-name&gt;<br />  &lt;servlet-class&gt;<font color="#ff0066">org.springframework.web.context.ContextLoaderServlet</font>&lt;/servlet-class&gt;<br />  &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;<br /> &lt;/servlet&gt;</font>
		</p>
		<p>
				<font color="#cc00ff"> &lt;servlet&gt;<br />  &lt;servlet-name&gt;action&lt;/servlet-name&gt;<br />  &lt;servlet-class&gt;<font color="#ff0033">org.apache.struts.action.ActionServlet</font>&lt;/servlet-class&gt;<br />  &lt;load-on-startup&gt;3&lt;/load-on-startup&gt;<br /> &lt;/servlet&gt;</font>
		</p>
		<p>
				<font color="#cc00ff">  </font>
				<font color="#009966">  &lt;servlet-mapping&gt;<br />   &lt;servlet-name&gt;<font color="#ff0066">action</font>&lt;/servlet-name&gt;<br />  <br />  &lt;url-pattern<font color="#ff0066">&gt;*.do</font>&lt;/url-pattern&gt;<br /> &lt;/servlet-mapping&gt;</font>
		</p>
		<p>
				<font color="#009966"> </font>
				<font color="#000000">还有关于远程机制有Caucho的Hessian(一个借助HTTP的二进制协议) Burlap(一个基于XML的借助HTTP的传输协议), Apache Axis提供的JAX-RPC(基于SOAP的借助HTTP传输的web serverice), 还有基于RMI的远程调用.<br />想了解更多还是自已细看里面的代码吧!<br /><a href="/linansengling/archive/2006/09/19/70625.html">请继续关注Spring JPetStore(三) 在其上实现自已的Sunlight Netstore</a></font>
		</p>
<img src ="http://www.blogjava.net/linansengling/aggbug/70122.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/linansengling/" target="_blank">周先有</a> 2006-09-17 12:16 <a href="http://www.blogjava.net/linansengling/archive/2006/09/17/70122.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring JPetStore(一) 发布JPetStore应用</title><link>http://www.blogjava.net/linansengling/archive/2006/09/16/70041.html</link><dc:creator>周先有</dc:creator><author>周先有</author><pubDate>Sat, 16 Sep 2006 07:13:00 GMT</pubDate><guid>http://www.blogjava.net/linansengling/archive/2006/09/16/70041.html</guid><wfw:comment>http://www.blogjava.net/linansengling/comments/70041.html</wfw:comment><comments>http://www.blogjava.net/linansengling/archive/2006/09/16/70041.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/linansengling/comments/commentRss/70041.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/linansengling/services/trackbacks/70041.html</trackback:ping><description><![CDATA[
		<p align="left">    PetStore(宠物店)相信大家都不默生 , 它的功能包括一个产品目录 , 一个购物车 , 客户账户管理 , 订单历史 , 还有一些基本的个性选项功能 . 这是一个相当标准的数据驱动的J2EEWeb应用系统(没有EIS集成,也没有消息处理需求) . The Middleware Company(TMC, 著名JAVA社区TSS的母公司)在2002年正式规范化了本系统的业务需求,并且在2003年出了进一步修正 , 加入了两种特殊的需求: 要支持用唯一的数据库保存所有的持久化数据.  也要支持双数据库的场境: 一个数据库保存客户订单,另一个保存产品和账务数据. 前一种场境当然性能更好,对于相对简单的应用系统也更为实用. 后一种使用了主数据库实现目录跟踪功能(也就是说, 存放产品目录和客户账户数据), 而客户订单则分开存放在另一个订单数据库中. 这样, 由于系统在两个数据库上运行, 所以在下订单的时候就要求实现分布化事务.对PetStore有网上有各种不同的实现这里要讨论的是基于Sructs+Spring+iBATIS的轻量级框架实现的(来自于&lt;&lt;J2EE Development without EJB&gt;&gt; Rod Johnson  电子工业出版社)<br />源码下载(<a href="http://www.wrox.com/WileyCDA/WroxTitle/productCd-0764558315,descCd-download_code.html">http://www.wrox.com/WileyCDA/WroxTitle/productCd-0764558315,descCd-download_code.html</a>) <br /><br />       好了有了源码让我们先来一睹为快然后再来分析.<br />       要构建Spring Jpetstore 应用你还需要安装JDK 和Tomcat详情请看我的<a title="jsp入门" href="/linansengling/archive/2006/09/12/69243.html">JSP开发入门用户登陆认证</a> 此外为了用ANT构建应用还要安装设置ANT工具(下载地址:http://www.jakarta.apache.org) ANT的安装软件是解压软件包,只需把压缩文件解压到本地硬盘. 并设置一下环境变量:ANT_HOME=ANT的安装目录 PATH=%PATH%;%ANT_HOME%\bin; CLASSPATH=%CLASSPATH%;%ANT_HOME%\lib;<br />        好了环境搭建完闭, 现在进入 ..\spring-jpetstore\samples\jpetstore&gt;<br />执行ANT命令 ..\spring-jpetstore\samples\jpetstore&gt;ant<br />则将在 ..\spring-jpetstore\samples\jpetstore\dist目录下生成jpetstore.war的发布文件. 现在大功告成把jpetstore.war文件拷到tomcat安装目录\webapps\下. 启动tomcat服务器(tomcat安装目录\bin\star_up.bat). 启动hsql数据库(..\spring-jpetstore\samples\jpetstore\db\hsqldb\server.bat). 好了一切搞定现在打开浏览器输入(<a href="http://localhost:8080/jpetstore">http://localhost:8080/jpetstore</a>)你将可看到如下:<br /><br /></p>
		<p align="center">
				<img style="WIDTH: 670px; HEIGHT: 301px" height="768" alt="index.jpg" src="http://www.blogjava.net/images/blogjava_net/linansengling/index.jpg" width="1024" border="0" /> <br /><br />借助于(..\spring-jpetstore\samples\jpetstore\db\hsqldb\manager.bat)看到的hsql数据库中的数据<br /><br /></p>
		<p align="center">
				<img style="WIDTH: 697px; HEIGHT: 344px" height="768" alt="db.jpg" src="http://www.blogjava.net/images/blogjava_net/linansengling/db.jpg" width="1024" border="0" />
		</p>
		<p align="left">发布搞定下面对它做一些简要的分析!<br /><a title="spring jpetstore(二)" href="/linansengling/archive/2006/09/17/70122.html" target="_blank">请看Spring JPetStore(二)   JPetStore的分析</a><br /></p>
<img src ="http://www.blogjava.net/linansengling/aggbug/70041.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/linansengling/" target="_blank">周先有</a> 2006-09-16 15:13 <a href="http://www.blogjava.net/linansengling/archive/2006/09/16/70041.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSP开发入门用户登陆认证</title><link>http://www.blogjava.net/linansengling/archive/2006/09/12/69243.html</link><dc:creator>周先有</dc:creator><author>周先有</author><pubDate>Tue, 12 Sep 2006 13:07:00 GMT</pubDate><guid>http://www.blogjava.net/linansengling/archive/2006/09/12/69243.html</guid><wfw:comment>http://www.blogjava.net/linansengling/comments/69243.html</wfw:comment><comments>http://www.blogjava.net/linansengling/archive/2006/09/12/69243.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/linansengling/comments/commentRss/69243.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/linansengling/services/trackbacks/69243.html</trackback:ping><description><![CDATA[
		<p>
				<a title="jsp开发入门" href="/files/linansengling/login.rar" target="_blank">源程序</a>
				<br />
				<br />此应用涉及开发环境的搭建，表单的提交、接收，数据库的读取，jsp的应用，以及javaScript对用户输入的验证，页<br />面的跳转。如有问题请与我探讨。——linan:</p>
		<p>一  开发环境的搭建<br />1 软件安装</p>
		<p>1.1 安装数据库管理系统SQL Server2000<br />1.2  安装JDK1.4(例：安装在C:\jdk1.4)<br />JDK可到<a href="http://www.sun.com/download/index.jsp?cat=Application%20Development&amp;tab=3&amp;subcat=SDKs%20(Software%20Development%20Kits">http://www.sun.com/download/index.jsp?cat=Application%20Development&amp;tab=3&amp;subcat=SDKs%20(Software%20Development%20Kits</a>) 下载<br />1.3  安装JSP服务器Tomcat5.0(例：安装在C:\tomcat5.0)<br />Tomcat可到<a href="http://jakarta.apache.org/site/downloads/downloads_tomcat-5.html">http://jakarta.apache.org/site/downloads/downloads_tomcat-5.html</a>下载  <br />(如果下载的是压缩包则解压后就可用不用安装，接着以下设置环境变量)<br /></p>
		<p>1．4 安装好要设置环境变量 <br />步骤：右击我的电脑-&gt;属性-&gt;高级-&gt;环境变量。(如果已有变量名则编辑，如果还没有则新建)<br />catalina_home=Tomcat安装路径 （例： catalina_home=C:\tomcat5.0）<br />catalina_base = Tomcat安装路径 （例： catalina_base=C:\tomcat5.0）<br />classpath= .;JDK安装路径\lib;%classpath%  (例: classpath=.;C:\jdk1.4\lib;)<br />java_home= JDK安装路径 (例: java_home=c:\jdk1.4)</p>
		<p>1.5 测试服务器安装是否成功<br />启动服务器(双击c:\tomcat5.0\bin\startup.bat文件)，启动浏览器在地址栏中输入（<a href="http://localhost:8080/">http://localhost:8080/</a>）<br /><br />二 建立用户登陆认证应用(可用记事本来编辑，扩展名保存为.jsp或.htm即可)<br />在c:\tomcat5.0\webapps下建立如下的目录结构：<br />新建文件夹login  在login文件夹下建立文件夹WEB-INF和文件login.htm、logincheck.jsp、ok.htm再在WEB-INF建立文夹lib<br />并将我所提供的lib下的文件（msbase.jar,msutil.jar,mssqlserver.jar）文件拷到新建的lib文件夹下。下面各文件的内容分别为：<br />1  longin.htm</p>
		<p>&lt;%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %&gt;<br />&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "<a href="http://www.w3.org/TR/html4/loose.dtd">http://www.w3.org/TR/html4/loose.dtd</a>"&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;<br />&lt;title&gt;login.html&lt;/title&gt;<br />&lt;script language="javascript" src="../share/com.js"&gt;&lt;/script&gt;<br />&lt;script language="javaScript" &gt;<br />&lt;!--<br /> function checkstr()<br /> {  <br />  if(form.username.value=="")<br />    {alert("用户名不能为空！");     <br />     return false;<br />    }<br />      if(form.password.value=="")<br />    {alert("密码不能为空！");      <br />    return false;}<br />   else {<br />      form.submit();<br />   }<br /> }  <br />--&gt;<br /> &lt;/script&gt;<br />&lt;/head&gt;<br />&lt;body&gt;</p>
		<p>&lt;table width="1000" border="0" cellspacing="0" cellpadding="0"&gt;<br />  &lt;tr&gt;<br />    &lt;td &gt;&lt;form name="form" method="post" action="logincheck.jsp"&gt;<br />        &lt;table width="563" height="100" border="0" bordercolor="#FF9900"&gt;<br />          &lt;tr&gt;<br />            &lt;td width="148" align="center"&gt;&amp;nbsp;&lt;/td&gt;<br />            &lt;td width="121" height="35" align="center"&gt; &amp;nbsp;用户名：&lt;/td&gt;<br />            &lt;td width="280" align="left" &gt;<br />              &lt;input name="username" type="text" maxlength="13" value="linan"&gt;&lt;/td&gt;<br />          &lt;/tr&gt;<br />          &lt;tr&gt;<br />            &lt;td align="center"&gt;&amp;nbsp;&lt;/td&gt;<br />            &lt;td align="center"&gt;密&amp;nbsp;&amp;nbsp;码：&lt;/td&gt;<br />            &lt;td align="left"&gt;<br />              &lt;input name="password" type="password" maxlength="15" value="linan"&gt;&lt;/td&gt;<br />          &lt;/tr&gt;<br />          &lt;tr align="center" valign="bottom"&gt;<br />            &lt;td height="32" colspan="3"&gt;&lt;input name="login" type="button" value="登陆" onClick="checkstr()"&gt;<br />              &lt;input name="button" type="button"  onClick="reg()"  value="注册"&gt;&lt;/td&gt;<br />          &lt;/tr&gt;<br />        &lt;/table&gt;<br />    &lt;/form&gt;&lt;/td&gt;<br />  &lt;/tr&gt;<br />&lt;/table&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</p>
		<p>2   logincheck.jsp</p>
		<p>&lt;%@ page contentType="text/html; charset=gb2312" language="java" %&gt;</p>
		<p>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "<a href="http://www.w3.org/TR/html4/loose.dtd">http://www.w3.org/TR/html4/loose.dtd</a>"&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;logincheck.jsp&lt;/title&gt;<br />&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;<br />&lt;/head&gt;<br /> &lt;%@ page import="java.sql.*"%&gt;</p>
		<p>&lt;body&gt;<br />&lt;%   <br /> String username=(String)request.getParameter("username");<br /> String password=(String)request.getParameter("password");<br /> <br /> try{<br /> <br /> Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");<br />    Connection con=DriverManager.getConnection("jdbc:odbc:login","","");<br />  <br /> String sqls="select * from usertest where username='"+username+"' and password='"+password+"'";<br /> Statement stmt=con.createStatement();<br />    ResultSet rs=stmt.executeQuery(sqls);<br />     int k=0;<br />     if(rs.next()){<br />    k=k+1;<br />   }   <br />  <br />     if(k&gt;0)  <br />     response.sendRedirect("ok.htm"); <br />   else<br />     response.sendRedirect("login.html");    <br />     <br /> con.close();<br />     <br /> }catch(Exception e){<br /> out.println(e.toString());<br /> }<br />  %&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</p>
		<p>3   ok.htm</p>
		<p>&lt;%@ page contentType="text/html; charset=gb2312" %&gt;<br />&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "<a href="http://www.w3.org/TR/html4/loose.dtd">http://www.w3.org/TR/html4/loose.dtd</a>"&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;<br />&lt;title&gt;ok&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;p&gt;成功登陆！&lt;/p&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</p>
		<p>三 建立数据库<br />1 建立数据库login建立表usertest<br />create database test<br />CREATE TABLE usertest (<br />[userid] [int] IDENTITY (1, 1) NOT NULL ,<br />[username] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,<br />[password] [char] (10) COLLATE Chinese_PRC_CI_AS NULL <br />) ON [PRIMARY]<br />insert into usertest values('linan','linan');</p>
		<p>2.配置ODBC数据源（用JDBC-ODBC访问数据库容易成功开发时可用）<br />   开始-&gt;设置-&gt;控制面版-&gt;管理工具-&gt;ODBC数据源-&gt;添加-&gt;SQL Server-&gt;(名称：login(不能是其它的否则接不上数据库) 服务器：(127.0.0.1))-&gt;下一步-&gt;（使用windowsNT认证）-&gt;下一步-&gt;(更改默认的数据库为test))-&gt;下一步-&gt;完成<br />四 一切搞定下面测试<br />启动服务器(双击c:\tomcat5.0\bin\startup.bat文件)，启动浏览器在地址栏中输入（<a href="http://localhost:8080/login\login.jsp">http://localhost:8080/login\login.jsp</a>(如果用户名与数据库中的相同则登陆成功，默认为user=name“linan”,password=”linan”)<br /></p>
<img src ="http://www.blogjava.net/linansengling/aggbug/69243.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/linansengling/" target="_blank">周先有</a> 2006-09-12 21:07 <a href="http://www.blogjava.net/linansengling/archive/2006/09/12/69243.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>