我在学习 j2ee ,  准备结合spring、 struts、 ibatis写一个简单的数据库操作demo。具体是在JSP页面上有对应数据库属性的几个文本框,输入一天记录后,点击submit  后希望插入到数据库中。各位大侠给看看。
代码如下:
web.xml<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring.xml</param-value>
</context-param>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>

解决方案 »

  1.   

    spring.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <beans
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName">
        <value>com.mysql.jdbc.Driver</value>
       </property>
       <property name="username">
         <value>root</value>
       </property>
      <property name="password">
         <value>360buy</value>
       </property>
       <property name="url">
         <value>jdbc:mysql://localhost:3306/zhuhua</value>
       </property>
    </bean>

    <bean id="sqlmapclient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">  
       <property name="configLocation">
          <value>/resource/sqlmap-config.xml</value>
       </property>
    </bean>

    <bean id="testDao" class="org.testdao.TestDao"> 
    <property name="dataSource">
    <ref bean="datasource"/>
    </property>
    <property name="sqlMapClient">
    <ref bean="sqlmapclient"/>
    </property>
    </bean>
    <bean id="add" class="org.action.NodeAction">
    <property name="testdao">
    <ref bean="testDao"/>
    </property>
    </bean>

    </beans>struts.xml
    <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC 
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://Struts.apache.org/dtds/struts-2.0.dtd">
    <struts>
    <include file="struts-default.xml"/>
    <package name="default" extends="struts-default">
    <action name="addnode" class="add">
    <result name="success">/ok.jsp</result>
    </action>
    </package>
    </struts>struts.properties
    struts.objectFactory=springsqlmap.xml<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE sqlMap 
    PUBLIC  "-//iBATIS.com//DTD SQL Map 2.0//EN"
        "http://www.ibatis.com/dtd/sql-map-2.dtd">
        
    <sqlMap namespace="p"> <select id="getNode" parameterClass="java.lang.String" resultClass="org.vo.Node">
    select id  ,ip , name  from node where id=#id#
    </select> <insert id="insertNode" parameterClass="org.vo.Node">
    insert into node(id,ip,name) values(#id#,#ip#,#name#)
    </insert>

    <update id="updateNode"  parameterClass="java.lang.String"  >
    update node set name="qingdao" where id=#id#
    </update>

    <delete id="deleteNode" parameterClass="java.lang.String" >
    delete from node where ip=#ip#
    </delete>

    <select id="getAllNode" resultClass="org.vo.Node">
    select * from node
    </select>
    </sqlMap>
    sqlmap-config.xml<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE sqlMapConfig  
    PUBLIC  "-//iBATIS.com//DTD SQL Map Config 2.0/" 
    "http://www.ibatis.com/dtd/sql-map-config-2.dtd"><sqlMapConfig>
    <settings
    cacheModelsEnabled="true" 
    enhancementEnabled="true"
    lazyLoadingEnabled="false"
    errorTracingEnabled="true" 
    maxRequests="32"
    maxSessions="10"
    maxTransactions="5"
    useStatementNamespaces="true"
    />
    <transactionManager type="JDBC" >
    <dataSource type="SIMPLE">
    <property name="JDBC.Driver" value="com.mysql.jdbc.Driver"/>
    <property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost:3306/test"/>
    <property name="JDBC.Username" value="root"/>
    <property name="JDBC.Password" value="123"/>
    </dataSource>
    </transactionManager>
    <sqlMap resource="sqlmap.xml"/>
    </sqlMapConfig>
      

  2.   

    src 源包下:
    package org.vo;
    Node.java
    public class Node {
    private String id;
    private String ip;
    private String name;
    public Node()
    {
    }
    public Node(String id,String ip,String name)
    {
    this.id=id;
    this.ip=ip;
    this.name=name;
    }

    public void setId(String id) {
    this.id = id;
    }
    public String getId() {
    return id;
    }
    public void setIp(String ip) {
    this.ip = ip;
    }
    public String getIp() {
    return ip;
    }
    public void setName(String name) {
    this.name = name;
    }
    public String getName() {
    return name;
    }
    }NodeAction .java
    package org.action;import org.testdao.TestDao;
    import org.vo.Node;
    import com.opensymphony.xwork2.ActionSupport;public class NodeAction extends ActionSupport{ private static final long serialVersionUID = 1L;
    private String id;
    private String ip;
    private String name;
    private TestDao testdao;

    public void setId(String id) {
    this.id = id;
    }
    public String getId() {
    return id;
    }
    public void setIp(String ip) {
    this.ip = ip;
    }
    public String getIp() {
    return ip;
    }
    public void setName(String name) {
    this.name = name;
    }
    public String getName() {
    return name;
    }
    @Override
    public String execute() throws Exception {

    Node node=new Node();
    node.setId(getId());
    node.setIp(getIp());
    node.setName(getName());

    testdao.save(node);

    return SUCCESS;
    }
    public TestDao getTestdao() {
    return testdao;
    }
    public void setTestdao(TestDao testdao) {
    this.testdao = testdao;
    }

    }
    TestDao.java
    package org.testdao;
    import java.util.List;
    import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
    import org.vo.Node;
    public class TestDao extends  SqlMapClientDaoSupport{
    public void save(Node node)
    {
    this.getSqlMapClientTemplate().insert("p.insertNode", node);
    }
        
    public Node getNode(String id)
    {
    return (Node)this.getSqlMapClientTemplate().queryForObject("p.getNode", id);
    }

    public void updateNode(String id)
    {
    this.getSqlMapClientTemplate().update("p.updateNode", id);
    }

    public void deleteNode(String ip)
    {
    this.getSqlMapClientTemplate().delete("p.deleteNode", ip);
    }

    @SuppressWarnings("unchecked")
    public List getAllNode()
    {
    return  this.getSqlMapClientTemplate().queryForList("p.getAllNode");

    }
    }
      

  3.   

    Web-Root下JSP
    index.jsp
    <%@ page language="java" pageEncoding="utf-8"%>
    <%@ taglib uri="/struts-tags" prefix="s"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
       <title>添加数据库</title>
      </head>  
      <body>
        <s:form action="addnode.action" method="post">
        <s:textfield name="id" label="id"/>
        <s:textfield name="ip" label="ip"/>
        <s:textfield name="name" label="name"/>
        <s:submit value="添加到数据库"></s:submit>
        </s:form>
      </body>
    </html>ok.jsp
    <%@ page language="java" pageEncoding="UTF-8"%>
    <%@ taglib uri="/struts-tags" prefix="s" %>
    <html>
      <head>
    <title>添加数据库成功</title>
      </head>  
      <body>
        <h2> 
        添加成功!<br> id=<s:property value="id"/>; ip=<s:property value="ip"/>; name=<s:property value="name"/> 
        </h2>
      </body>
    </html>
      

  4.   

    部署运用后错误:
    严重: Context initialization failed
    org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [org.apache.commons.dbcp.BasicDataSource] for bean with name 'datasource' defined in ServletContext resource [/WEB-INF/spring.xml]: problem with class file or dependent class; nested exception is java.lang.UnsupportedClassVersionError: Bad version number in .class file (unable to load class org.apache.commons.dbcp.BasicDataSource)
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1144)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:524)
    at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1177)
    at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:758)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:422)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4206)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4705)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1079)
    at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1002)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:506)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
    at org.apache.catalina.core.StandardService.start(StandardService.java:525)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
    Caused by: java.lang.UnsupportedClassVersionError: Bad version number in .class file (unable to load class org.apache.commons.dbcp.BasicDataSource)
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2822)
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1159)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1647)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
    at org.springframework.util.ClassUtils.forName(ClassUtils.java:211)
    at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:385)
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1138)
    ... 33 more
    2012-2-22 12:05:06 org.apache.catalina.core.StandardContext listenerStart
    严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
    org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [org.apache.commons.dbcp.BasicDataSource] for bean with name 'datasource' defined in ServletContext resource [/WEB-INF/spring.xml]: problem with class file or dependent class; nested exception is java.lang.UnsupportedClassVersionError: Bad version number in .class file (unable to load class org.apache.commons.dbcp.BasicDataSource)
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1144)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:524)
    at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1177)
    at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:758)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:422)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4206)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4705)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1079)
    at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1002)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:506)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
    at org.apache.catalina.core.StandardService.start(StandardService.java:525)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
    Caused by: java.lang.UnsupportedClassVersionError: Bad version number in .class file (unable to load class org.apache.commons.dbcp.BasicDataSource)
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2822)
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1159)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1647)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
    at org.springframework.util.ClassUtils.forName(ClassUtils.java:211)
    at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:385)
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1138)
    ... 33 more
      

  5.   

    解决了,原来是eclipse与tomcat的JDK版本不一致。
      

  6.   

       什么意思?你的意思是说tomcat也有版本?但是我用jetty也有这个错误啊。