Java 带maven客户表单web应用程序的Spring MVC不工作
我是Spring MVC新手,我正在尝试编写一个简单的web应用程序来开始使用Spring。我不知道应用程序没有在哪里执行。导入此Maven项目代码并在IDE中运行。请在代码方面帮助我运行该项目 以下是我所拥有的: web.xml:Java 带maven客户表单web应用程序的Spring MVC不工作,java,mysql,hibernate,maven,spring-mvc,Java,Mysql,Hibernate,Maven,Spring Mvc,我是Spring MVC新手,我正在尝试编写一个简单的web应用程序来开始使用Spring。我不知道应用程序没有在哪里执行。导入此Maven项目代码并在IDE中运行。请在代码方面帮助我运行该项目 以下是我所拥有的: web.xml: <?xml version="1.0" encoding="UTF-8" ?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmln
<?xml version="1.0" encoding="UTF-8" ?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>spring-crm-rest</display-name>
<absolute-ordering />
<welcome-file-list>
<welcome-file>list-customers.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-crm-rest-demo-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
接口:CustomerDAO.java
package com.luv2code.springdemo.dao;
import java.util.List;
import com.luv2code.springdemo.entity.Customer;
public interface CustomerDAO {
public List<Customer> getCustomers();
}
我不熟悉Spring MVC+Hibrenate和MySql。当运行我的应用程序时,浏览器未点击控制器,不包括list-controller.jsp页面。导入此Maven项目代码并在IDE中运行。请在代码中帮助我运行项目。在数据库连接中,您不需要使用:
?
,并且您需要验证数据库端口是否为3306
:
<!-- Step 1: Define Database DataSource / connection pool -->
<bean id="myDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306/demo_customer_db" />
<property name="user" value="hbstudent" />
<property name="password" value="hbstudent" />
最后需要确定的是,如果用户
hbstudent
拥有所有用户帐户,这看起来像是数据库连接问题:
试试这个
<!-- declare datasource bean -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/databaseName?
useSSL=false"/>
<property name="username" value="databaseUsername" />
<property name="password" value="databasePassword" />
</bean>
以下是一个项目:
你好,老板,项目很好,对你来说很好:)这是控制台:异常org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常为org.springframework.transaction.CannotCreateTransactionException:无法打开事务的Hibernate会话;嵌套异常是org.hibernate.exception.genericjdbception:无法获取JDBC连接org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982)您可以在这里找到我的项目,我使用了almoste相同的技术;尝试删除数据库并创建一个空的onehello,brother未在我的控制台中运行:HTTP状态500–内部服务器错误--------------------------------------------------------------------为Servlet[dispatcher]键入异常报告消息Servlet.init()引发异常说明服务器遇到意外情况,无法满足请求。异常javax.servlet.ServletException:servlet[dispatcher]的servlet.init()抛出异常org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)设置属性值时出错;嵌套异常为org.springframework.beans.NotWritablePropertyException:bean类[org.springframework.jdbc.datasource.DriverManager数据源]的无效属性“jdbcUrl”:bean属性“jdbcUrl”不可写或具有无效的setter方法。setter的参数类型与getter的返回类型匹配吗?
package com.luv2code.springdemo.dao;
import java.util.List;
import com.luv2code.springdemo.entity.Customer;
public interface CustomerDAO {
public List<Customer> getCustomers();
}
package com.luv2code.springdemo.dao;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.query.Query;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import com.luv2code.springdemo.entity.Customer;
@Repository
public class CustomerDAOImpl implements CustomerDAO {
// need to inject the session factory
@Autowired
private SessionFactory sessionFactory;
@Override
@Transactional
public List<Customer> getCustomers() {
// get the current hibernate session
Session currentSession = sessionFactory.getCurrentSession();
// create a query
Query<Customer> theQuery =
currentSession.createQuery("from Customer", Customer.class);
// execute query and get result list
List<Customer> customers = theQuery.getResultList();
// return the list
return customers;
}
}
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<title>List Customers</title>
</head>
<body>
<div id="wrapper">
<div id="header">
<h2>CRF-Customer Registration Form</h2>
</div>
</div>
<div id="container">
<div id="content">
<!-- add out html table here -->
<table>
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Father Name</th>
<th>Gender</th>
<th>Dob</th>
<th>Address</th>
</tr>
<!-- loop over and print our customers -->
<c:forEach var="tempCustomer" items="${customers}">
<tr>
<td> <c:out value="${tempCustomer.firstName}" /></td>
<td> <c:out value="${tempCustomer.lastName}" /></td>
<td> <c:out value="${tempCustomer.fatherName}" /></td>
<td> <c:out value="${tempCustomer.gender}" /></td>
<td> <c:out value="${tempCustomer.dob}" /></td>
<td> <c:out value="${tempCustomer.address}" /></td>
<%-- <td> ${tempCustomer.lastName} </td>
<td> ${tempCustomer.fatherName} </td>
<td> ${tempCustomer.gender} </td>
<td> ${tempCustomer.dob} </td>
<td> ${tempCustomer.address} </td> --%>
</tr>
</c:forEach>
</table>
</div>
</div>
</body>
</html>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.luv2code.springdemo</groupId>
<artifactId>spring-crm-rest</artifactId>
<version>1.0.0</version>
<packaging>war</packaging>
<properties>
<springframework.version>5.0.6.RELEASE</springframework.version>
<hibernate.version>5.4.1.Final</hibernate.version>
<mysql.connector.version>5.1.6</mysql.connector.version>
<c3po.version>0.9.2.1</c3po.version>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${springframework.version}</version>
</dependency>
<!-- Add Jackson for JSON converters -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.5</version>
</dependency>
<!-- Hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<!-- MySQL -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.connector.version}</version>
</dependency>
<!-- C3PO -->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>${c3po.version}</version>
</dependency>
<!-- Servlet+JSP+JSTL -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.1</version>
</dependency>
<!-- to compensate for java 9+ not including jaxb -->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
<build>
<finalName>spring-crm-rest</finalName>
<plugins>
<!-- Builds a Web Application Archive (WAR) file from the project output
and its dependencies. -->
<plugin>
<!-- Add Maven coordinates (GAV) for: maven-war-plugin -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.0</version>
</plugin>
</plugins>
</build>
</project>
HTTP Status 500 – Internal Server Error
Type Exception Report
Message Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.GenericJDBCException: Unable to acquire JDBC Connection
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Exception
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.GenericJDBCException: Unable to acquire JDBC Connection
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:866)
javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Root Cause
org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.GenericJDBCException: Unable to acquire JDBC Connection
org.springframework.orm.hibernate5.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:564)
<!-- Step 1: Define Database DataSource / connection pool -->
<bean id="myDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306/demo_customer_db" />
<property name="user" value="hbstudent" />
<property name="password" value="hbstudent" />
<!-- declare datasource bean -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/databaseName?
useSSL=false"/>
<property name="username" value="databaseUsername" />
<property name="password" value="databasePassword" />
</bean>