maven开发怎么配置maven项目缺少web.xmll

使用Maven在Eclipse中创建Web项目 - 青葱岁月 - ITeye博客
博客分类:
一、新建 Maven Web项目
1.新建Maven Project
new project--&选择 Maven Project --& 下一步选择工作空间 --&下一步在Filter中输入 org.apache.maven.archetypes--&选择Artifact Id为 maven-archetype-webapp的那条--&下一步 输入GroupID大项目名称和 ArtifactID子项目名称 --& 下一步
2.配置Maven项目
上面创建的项目中只有src/main/resources一个源代码目录,一般要再添加一个或三个源代码文件夹 src/main/java、src/test/java 、src/test/resources
new --& Source Folder --& 输入src/main/java --& 完成(另外两个同理,这两个是放测试类和配置的) 进入Build Path --& Configure Build Path --& Source修改这 4个源文件目录的编译路径,有 main的设置为target/classes 、test的设置为 target/test-classes,并选中Allow output folders for folders到Library选项卡中设置一下 jdk还可以根据你的习惯到 Order and Export选项卡中调整源代码目录的显示顺序
3.给项目添加Facets进入项目属性 --& 选择Project Facets --& 点击Convert to faceted form...- 这是会打开 facets设置页面,勾选Dynamic Web Module并选择合适的 Version(jdk6 选2.5,jdk7选 3.0),注意点击下面的Further configuration available...弹出Modify Faceted Project 窗口,这里设置 web根目录位置,输入src/main/webapp,勾选 Generate web.xml可自动生成web.xml
4.设置部署程序集进入项目属性 --& 选择Deployment Assembly,将带有 test的两个去掉(测试用的不需要部署)并添加项目依赖的 jar包Add --& Java Build Path Entries --& Maven Dependencies
5.这样web 项目就基本完成,只要在 pom.xml的依赖中加入需要的依赖就可以了,注意选择依赖的 Scope不需要发布的jar(如 servlet-api、jsp-api )设置为 provided,测试的设置为test,具体介绍看看文档吧。至于这个项目怎么运行?就跟 web项目一样放到tomcat里就行了。
二、将Web项目转为Maven Web 项目
选择已有的 web项目,根据上面的方法重新设置一下项目的目录结构,然后右键项目 Maven --& Enable Dependency Management --& 然后根据上面的方法设置一下项目的目录结构、编译和部署等就行了,项目就不用在 lib里面放jar 包了。
浏览 12468
chenzhou123520
浏览: 2601254 次
来自: 北京
这算是mybatis的奇巧淫技吗?哈哈哈
虽然已经找到 原因了,但是楼主写的还是很清楚 的
关于主键和索引采用行锁还是表锁,与条件是否等值查询没有绝对关系 ...
您好,我的配置跟你的一样,可就是不打印日志,很奇怪,你配置的时 ...Maven直接部署Web应用到Tomcat_服务器应用_Linux公社-Linux系统门户网站
你好,游客
Maven直接部署Web应用到Tomcat
来源:Linux社区&
1. 下载解压版Tomcat,并且配置好环境变量,使Tomcat能够成功启动。
使用解压版tomcat可以方便查看tomcat的后台输出的出错信息,便于调试。
2. 给tomcat配置用户名密码。
将tomcat安装目录下的/config/tomcat-user.xml修改为如下:
&?xml version='1.0' encoding='cp936'?&
rolename="manager-gui"/&
rolename="manager-script"/&
username="username" password="password" roles="manager-gui,manager-script"/&
上面配置文件的作用是,给tomcat添加一个用户名为&username&,密码为&password&,权限为&manager-gui&的用户。
3. 在maven工程的pom.xml中添加如下代码。
&org.apache.maven.plugins&
&maven-compiler-plugin&
&org.apache.tomcat.maven&
&tomcat7-maven-plugin&
&http://localhost:8080/manager/text&
&username&
&password&
&/${project.artifactId}&
4. 部署应用
如果使用eclipse的话,就右键项目-&Run As-&Maven build&-&在Goals里面输入tomcat7: 如果直接使用Maven的话就执行命令:
Maven权威指南_中文完整版清晰PDF&
Maven 3.1.0 发布,项目构建工具
Linux 安装 Maven
Maven3.0 配置和简单使用
下搭建sun-jdk和Maven2
Maven使用入门
本文永久更新链接地址:
相关资讯 & & &
& (05月02日)
& (03月05日)
& (05月21日)
& (03月07日)
& (03月05日)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在??站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款maven之ssh项目搭建 -
- ITeye博客
博客分类:
1:新建maven-archetupe-webapp项目
2:web.xml配置文件如下
&?xml version="1.0" encoding="UTF-8"?&
&web-app id="WebApp_9" version="2.4" xmlns="/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="/xml/ns/j2ee /xml/ns/j2ee/web-app_2_4.xsd"&
&!-- springmvc 上下文监听器 ContextLoaderListener --&
&listener&
&listener-class&org.springframework.web.context.ContextLoaderListener&/listener-class&
&/listener&
&context-param&
&param-name&contextConfigLocation&/param-name&
&param-value&classpath:spring/*.xml&/param-value&
&/context-param&
&!-- springmvc 上下文监听器 ContextLoaderListener--&
&!-- struts过滤器 --&
&filter-name&SSH&/filter-name&
&filter-class&org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter&/filter-class&
&filter-mapping&
&filter-name&SSH&/filter-name&
&url-pattern&/*&/url-pattern&
&/filter-mapping&
&!-- struts过滤器 --&
&!-- 过滤器 --&
&filter-name&encodingFilter&/filter-name&
&filter-class&org.springframework.web.filter.CharacterEncodingFilter&/filter-class&
&init-param&
&param-name&encoding&/param-name&
&param-value&UTF-8&/param-value&
&/init-param&
&filter-mapping&
&filter-name&encodingFilter&/filter-name&
&url-pattern&/*&/url-pattern&
&/filter-mapping&
&!-- 过滤器 --&
&display-name&spring-ssh&/display-name&
&/web-app&
3: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"&
&!-- 请求参数的编码方式--&
&constant name="struts.i18n.encoding" value="UTF-8"/&
&!-- 指定被struts2处理的请求后缀类型。多个用逗号隔开--&
&constant name="struts.action.extension" value="action,do,htm,html"/&
&!-- 当struts.xml改动后,是否重新加载。默认值为false(生产环境下使用),开发阶段最好打开
&constant name="struts.configuration.xml.reload" value="true"/&
&!-- 是否使用struts的开发模式。开发模式会有更多的调试信息。默认值为false(生产环境下使用),开发阶段最好打开
&constant name="struts.devMode" value="false"/&
&!-- 设置浏览器是否缓存静态内容。默认值为true(生产环境下使用),开发阶段最好关闭
&constant name="struts.serve.static.browserCache" value="false" /&
&!-- 指定由spring负责action对象的创建
&constant name="struts.objectFactory" value="spring" /&
不用注解模式
&package name="book" namespace="/" extends="struts-default"&
&action name="login" class="struts2.LoginAction" method="login"&
&result name="success"&../views/login.jsp&/result&
&/package&
&!-- 是否开启动态方法调用--&
&constant name="struts.enable.DynamicMethodInvocation" value="false"/&
4: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"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd"
default-lazy-init="true"&
&mvc:annotation-driven /&
&context:component-scan base-package="com.xiaoji.ssh"&
&context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/&
&context:include-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice"/&
&/context:component-scan&
&context:property-placeholder location="classpath:property/jdbc.properties"/&
&bean id="dataSource" class="com.mchange.boPooledDataSource" destroy-method="close"&
&property name="driverClass" value="${database.driverClassName}" /&
&property name="jdbcUrl" value="${database.url}" /&
&property name="user" value="${database.username}" /&
&property name="password" value="${database.password}" /&
&!--连接池中保留的最大连接数。默认值: 15 --&
&property name="maxPoolSize" value="20"/&
&!-- 连接池中保留的最小连接数,默认为:3--&
&property name="minPoolSize" value="2"/&
&!-- 初始化连接池中的连接数,取值应在minPoolSize与maxPoolSize之间,默认为3--&
&property name="initialPoolSize" value="2"/&
&!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。默认值: 0 --&
&property name="maxIdleTime" value="60"/&
&!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。默认值: 3 --&
&property name="acquireIncrement" value="2"/&
&!--定义在从数据库获取新连接失败后重复尝试的次数。默认值: 30 ;小于等于0表示无限次--&
&property name="acquireRetryAttempts" value="0"/&
&!--重新尝试的时间间隔,默认为:1000毫秒--&
&property name="acquireRetryDelay" value="1000" /&
&!--如果为false,则获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常,但是数据源仍有效保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭。默认: false--&
&property name="breakAfterAcquireFailure" value="false"/&
&!--定义Hibernate的SessionFactory --&
&!-- SessionFactory使用的数据源为上面的数据源 --&
&!-- 指定了Hibernate的映射文件和配置信息 --&
&bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"&
&property name="dataSource" ref="dataSource"/&
&property name="annotatedClasses"&
&value&com.xiaoji.ssh.entity.Book&/value&
&/property&
&property name="annotatedPackages"&
&value&com.xiaoji.ssh.entity&/value&
&/property&
&property name="hibernateProperties"&
&prop key="hibernate.dialect"&org.hibernate.dialect.MySQLDialect&/prop&
&prop key="show_sql"&true&/prop&
&prop key="hibernate.jdbc.batch_size"&20&/prop&
&/property&
&bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager"&
&property name="sessionFactory" ref="sessionFactory" /&
REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。
MANDATORY:支持当前事务,如果当前没有事务,就抛出异常。
REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。
NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。
NESTED:支持当前事务,如果当前事务存在,则执行一个嵌套事务,如果当前没有事务,就新建一个事务。
&tx:advice id="txAdvice" transaction-manager="transactionManager"&
&tx:attributes&
&tx:method name="add*" propagation="REQUIRED" /&
&tx:method name="delete*" propagation="REQUIRED" /&
&tx:method name="update*" propagation="REQUIRED" /&
&tx:method name="save*" propagation="REQUIRED" /&
&!-- &tx:method name="*" propagation="true" /&--&
&/tx:attributes&
&/tx:advice&
&aop:config&
&aop:pointcut id="allManagerMethod"
expression="execution(* com.xiaoji.ssh.service.*.*(..))" /&
&aop:advisor advice-ref="txAdvice"
pointcut-ref="allManagerMethod" /&
&/aop:config&
&bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"&
&property name="sessionFactory" ref="sessionFactory" /&
5:jdbc.properties代码如下
database.driverClassName=com.mysql.jdbc.Driver
database.url=jdbc:mysql://127.0.0.1:3306/springtest?useUnicode=true&characterEncoding=UTF-8
database.username=root
database.password=root
CREATE TABLE `book` (
`book_id` int(11) NOT NULL auto_increment,
`name` varchar(50) default NULL,
`description` varchar(100) default NULL,
PRIMARY KEY
(`book_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
7:创建entity,使用hibernate-jpa注解实现数据层
package com.xiaoji.ssh.
import javax.persistence.C
import javax.persistence.E
import javax.persistence.GeneratedV
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.T
* Book entity. @author MyEclipse Persistence Tools
@Table(name = "book", catalog = "springtest")
public class Book implements java.io.Serializable {
private Integer bookId;
// Constructors
/** default constructor */
public Book() {
/** full constructor */
public Book(String name, String description) {
this.name =
this.description =
// Property accessors
@GeneratedValue(strategy = IDENTITY)
@Column(name = "book_id", unique = true, nullable = false)
public Integer getBookId() {
return this.bookId;
public void setBookId(Integer bookId) {
this.bookId = bookId;
@Column(name = "name", length = 50)
public String getName() {
return this.
public void setName(String name) {
this.name =
@Column(name = "description", length = 100)
public String getDescription() {
return this.
public void setDescription(String description) {
this.description =
package com.xiaoji.ssh.
import java.util.L
import com.xiaoji.ssh.entity.B
public interface BookDao{
public List&Book& getBookList();
public void saveBook(Book book);
public void deleteBook(int bookId);
public void updateBook(Book book);
public Book getBookByBookId(int bookId);
package com.xiaoji.ssh.dao.
import java.util.L
import org.springframework.beans.factory.annotation.A
import org.springframework.orm.hibernate3.HibernateT
import org.springframework.stereotype.R
import com.xiaoji.ssh.dao.BookD
import com.xiaoji.ssh.entity.B
@Repository
public class BookDaoImpl
implements BookDao {
private HibernateTemplate hibernateT
public HibernateTemplate getHibernateTemplate() {
return hibernateT
@Autowired
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateT
public List&Book& getBookList() {
List&Book& list = (List&Book&)getHibernateTemplate().find("From Book");
public void saveBook(Book book) {
getHibernateTemplate().save(book);
public void deleteBook(int bookId) {
getHibernateTemplate().delete(getBookByBookId(bookId));
public void updateBook(Book book) {
// TODO Auto-generated method stub
getHibernateTemplate().update(book);
public Book getBookByBookId(int bookId) {
Book book = (Book)getHibernateTemplate().get(Book.class, bookId);
9:创建service
package com.xiaoji.ssh.
import java.util.L
import com.xiaoji.ssh.entity.B
public interface BookService {
public List&Book& getBookList();
public void saveBook(Book book);
public void deleteBook(int bookId);
public void updateBook(Book book);
public Book getBookByBookId(int bookId);
package com.xiaoji.ssh.service.
import java.util.L
import org.springframework.beans.factory.annotation.A
import org.springframework.stereotype.S
import com.xiaoji.ssh.dao.BookD
import com.xiaoji.ssh.entity.B
import com.xiaoji.ssh.service.BookS
public class BookServiceImpl implements BookService{
@Autowired
private BookDao bookD
public List&Book& getBookList() {
return bookDao.getBookList();
public void saveBook(Book book) {
bookDao.saveBook(book);
public void deleteBook(int bookId) {
bookDao.deleteBook(bookId);
public void updateBook(Book book) {
bookDao.updateBook(book);
public Book getBookByBookId(int bookId) {
return bookDao.getBookByBookId(bookId);
10:action类源码如下
package com.xiaoji.ssh.
import org.apache.struts2.convention.annotation.A
import org.apache.struts2.convention.annotation.ExceptionM
import org.apache.struts2.convention.annotation.ExceptionM
import org.apache.struts2.convention.annotation.N
import org.apache.struts2.convention.annotation.ParentP
import org.apache.struts2.convention.annotation.R
import org.apache.struts2.convention.annotation.R
import com.opensymphony.xwork2.ActionS
* Struts2基于注解的Action配置
ParentPackage 继承父包
Namespace命名空间
Results跳转页面
Action访问方法
@ParentPackage("struts-default")
@Namespace("/book")
@Results( { @Result(name = "success", location = "/views/main.jsp"),
@Result(name = "error", location = "/views/error.jsp") })
@ExceptionMappings( { @ExceptionMapping(exception = "java.lange.RuntimeException", result = "error") })
public class BookAction extends ActionSupport{
public String getUsername() {
public void setUsername(String username) {
this.username =
@Action(value="test")
public String test(){
this.setUsername("strutsTest");
return SUCCESS;
@Action(value = "bookView", results = { @Result(name = "success", location = "/index.jsp") })
public String bookView(){
return SUCCESS;
11:pom.xml源码
&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/maven-v4_0_0.xsd"&
&modelVersion&4.0.0&/modelVersion&
&groupId&com.xiaoji.ssh&/groupId&
&artifactId&spring-ssh&/artifactId&
&packaging&war&/packaging&
&version&0.0.1-SNAPSHOT&/version&
&name&spring-ssh Maven Webapp&/name&
&url&http://maven.apache.org&/url&
&properties&
&spring.version&3.2.8.RELEASE&/spring.version&
&jdk.version&1.6&/jdk.version&
&hibernate.version&3.5.4-Final&/hibernate.version&
&/properties&
&dependencies&
&!-- spring --&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-context&/artifactId&
&version&${spring.version}&/version&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-test&/artifactId&
&version&${spring.version}&/version&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-web&/artifactId&
&version&${spring.version}&/version&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-webmvc&/artifactId&
&version&${spring.version}&/version&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-tx&/artifactId&
&version&${spring.version}&/version&
&/dependency&
&dependency&
&groupId&org.aspectj&/groupId&
&artifactId&aspectjweaver&/artifactId&
&version&1.7.4&/version&
&/dependency&
&!-- spring --&
&!-- hibernate --&
&dependency&
&groupId&org.hibernate&/groupId&
&artifactId&hibernate-core&/artifactId&
&version&3.5.4-Final&/version&
&/dependency&
&dependency&
&groupId&org.hibernate.javax.persistence&/groupId&
&artifactId&hibernate-jpa-2.1-api&/artifactId&
&version&1.0.0.Final&/version&
&/dependency&
&dependency&
&groupId&springframework&/groupId&
&artifactId&spring-hibernate&/artifactId&
&version&1.2.6&/version&
&/dependency&
&dependency&
&groupId&org.hibernate&/groupId&
&artifactId&hibernate-annotations&/artifactId&
&version&3.5.4-Final&/version&
&/dependency&
&!-- 连接池包 --&
&dependency&
&groupId&c3p0&/groupId&
&artifactId&c3p0&/artifactId&
&version&0.9.1.2&/version&
&/dependency&
&!-- 链接池包 --&
&!--hibernate
&!--struts
&dependency&
&groupId&org.apache.struts&/groupId&
&artifactId&struts2-core&/artifactId&
&version&2.3.16&/version&
&/dependency&
&dependency&
&groupId&org.apache.struts&/groupId&
&artifactId&struts2-spring-plugin&/artifactId&
&version&2.3.16&/version&
&/dependency&
&dependency&
&groupId&org.apache.struts&/groupId&
&artifactId&struts2-convention-plugin&/artifactId&
&version&2.3.16&/version&
&/dependency&
&dependency&
&groupId&javassist&/groupId&
&artifactId&javassist&/artifactId&
&version&3.12.1.GA&/version&
&/dependency&
&dependency&
&groupId&com.sun&/groupId&
&artifactId&tools&/artifactId&
&version&1.5.0&/version&
&/dependency&
&!--struts
servlet --&
&dependency&
&groupId&org.apache.tomcat&/groupId&
&artifactId&jsp-api&/artifactId&
&version&6.0.41&/version&
&/dependency&
servlet --&
&dependency&
&groupId&junit&/groupId&
&artifactId&junit&/artifactId&
&version&4.11&/version&
&scope&test&/scope&
&/dependency&
&dependency&
&groupId&org.slf4j&/groupId&
&artifactId&slf4j-api&/artifactId&
&version&1.7.5&/version&
&/dependency&
&!-- mysql --&
&dependency&
&groupId&mysql&/groupId&
&artifactId&mysql-connector-java&/artifactId&
&version&5.1.30&/version&
&/dependency&
&!-- mysql --&
&/dependencies&
&groupId&org.apache.maven.plugins&/groupId&
&artifactId&maven-compiler-plugin&/artifactId&
&version&3.1&/version&
&configuration&
&source&${jdk.version}&/source&
&target&${jdk.version}&/target&
&/configuration&
&/plugins&
&/project&
12:忘记了还有个测试类
package com.xiaoji.ssh.
import org.junit.T
import org.junit.runner.RunW
import org.springframework.beans.factory.annotation.A
import org.springframework.test.context.ContextC
import org.springframework.test.context.junit4.SpringJUnit4ClassR
import com.xiaoji.ssh.entity.B
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:spring/*.xml" })
public class BookDaoTest {
@Autowired
private BookDao bookD
public void testGetBookList(){
System.out.println("xiaoji");
public void testSaveBookList(){
System.out.println(bookDao.getBookList());
public void testUpdateBookList(){
Book book = new Book();
book.setName("ssh3");
book.setDescription("ssh3");
bookDao.saveBook(book);
System.out.println("ok");
注解:在src/main/webapp下面建立个view目录,并新建main.jsp和error.jsp.如果觉的此文对你有帮助,请回复一下鼓励下我,以后我会发布更多类似文章。
下面贴上目录结构图:
下载次数: 549
浏览 16836
gulahong 写道very perfact!看见你的回复,我觉的我的博客没白写。前面很多人看都没评论使得我2015都没怎么写了,很纠结我到底继续分享我的知识么谢谢你的知识分享,正因为有了你们这些乐于分享的人,才使得各种技术的不断推陈出新!
very perfact!看见你的回复,我觉的我的博客没白写。前面很多人看都没评论使得我2015都没怎么写了,很纠结我到底继续分享我的知识么
jishiweili
浏览: 169019 次
来自: 成都
&div class=&quote_title ...
引用[b][b][b]TTTTTTTTTTT[/b][/b][ ...
楼主写的很清晰,这种开发模式如果熟悉的话可以快速的开发应用系统 ...
JPA的实现hibernate唯一恶心的就是设置数据库众多关系 ...

我要回帖

更多关于 maven web.xml 放在哪 的文章

 

随机推荐