怎样搭建spring框架?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样搭建spring框架?相关的知识,希望对你有一定的参考价值。
怎样搭建spring框架,我是java初学者,想学习spring框架。
需要那些包?怎么配置文件?等等。那里有教程或者直接解答下,
我网上找了很久没找到,最好有手把手的教程。
要进入spring,首先要搭配好开发环境,如果开发环境很难搭建(比如Eclipse和那些鼓吹记事本开发的人),那么你会失掉对spring的兴趣,所以我推荐你用Netbeans,6.1版本里自带了spring2.5,新建web项目的时候选择添加spring mvc支持就可以了,所需的包都包含在里面了。
spring的使用是比较简单的,所以重在理解原理,我们用spring其实就是在用别人的设计方法,如果自己没理清,那就变成了程序苦力。可以上网找教程,不过不全,一开始买书看比较好,后面知识的扩充就靠上网找资料了。我一开始的时候看"整合ssh应用开发详解",这本书一般,随便选一本有一定厚度的就可以用来入门了。 参考技术A 可以用两种方式来搭建Spring框架,其中第一种是利用MyEclipse工具里自带的来自动配置Spring,第二种是由自己手动去配置,这两者的区别在于,第一种稍微简单,第二种稍微复杂,但是第二种方式能配置较高版本的Spring框架,主要还是看个人的爱好而定.
二.第一种方式:自动配置方式。
(1).首先,新建一个Java项目,项目名为one_spring。
(2).选中这个Java项目,点击鼠标右键,选择MyEclipse下的Add Spring Capabilites...这个选项,也可以从菜单栏里选择,为了使我们创建的这个Java项目可以移植,所以可以选择最后一个箭头所指向处,点击Browse按钮,选择放置jar包的文件夹,点击Create New Folder后,新建一个文件夹叫lib,专门放置jar包:点击OK即可,然后再点击Next按钮:接着再点击Finish按钮即完成了自动配置Spring的开发环境,点击Finish按钮后,项目文件结构就配置完成了
第二种方式:手动配置Spring环境方式。
(1).首先,先下载所需要的Spring软件包,我下载的为Spring4.1.6这个版本的,下载完后得到几个文件夹,配置Spring所需的jar包就在libs下,鼠标右键选择Build Path — >configure Build Path...这个选项,点开之后点击右边Add External JARS...按钮,即红色箭头指向处,把我们下载到的软件包下的libs文件夹的jar包添加进去,我们可以把核心的jar包添加进去即可,点击OK按钮就可以了,如果是Web项目的话,就把这些核心jar包导入进WEB-INF下的lib文件夹下。
总结:不管是手动配置还是自动配置Spring的环境,都是大同小异的,主要按个人喜好选择就好。 注:还是建议把配置文件放在src目录底下,使用类路径的方式来找到!这样比较简单,也不会出现错误! 参考技术B 在eclipse下建立一个project,此处以demo为例建立项目。
如何在eclipse下搭建spring框架
如何在eclipse下搭建spring框架
因为此处结合struts2我们首先对struts2做简单的配置,主要以下几个文件配置web.xml,struts.xml,同时导入相应的jar。
现在开始配置spring,问题在于导入哪些jar,结合我的经验,spring-3-2-0导入以下基本jar便可,若要使用其他功能要导入相应的jar。导入较多,如下图中,其中commons-logging-xx.jar是结合struts2是要导入的在struts2里面。
如何在eclipse下搭建spring框架
接下来配置applicationContext.xml文件,在此处配置比较简单,没有考虑数据库的使用,只是基本的框架搭建,只是进行简单的实例配置。User类是编写的测试类。只有简单的setter和getter方法。
如何在eclipse下搭建spring框架
最后编写一个测试主类看看是否正确搭建了框架。
如何在eclipse下搭建spring框架 参考技术C spring2.0.jar
配置文件名字随便起 后面是.xml就行
然后在web.xml里面引入 参考技术D 关键要理解其中的概念
Ioc MVC AOP等等。
Spring+Spring MVC+Hibernate框架搭建实例
前言:这里只是说明整个搭建流程,并不进行原理性的讲解
一 下面所需要用到的数据库配置:
数据库方面,使用mysql创建一个users表,具体代码如下:
DROP TABLE IF EXISTS `users`; CREATE TABLE `users` ( `UserID` int(4) NOT NULL AUTO_INCREMENT, `UserName` varchar(16) NOT NULL, `Password` varchar(16) NOT NULL, `Telephone` varchar(16) NOT NULL, `Address` varchar(16) NOT NULL, PRIMARY KEY (`UserID`) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of users -- ---------------------------- INSERT INTO `users` VALUES (‘1‘, ‘aa‘, ‘aa12‘, ‘aa‘, ‘aa‘); INSERT INTO `users` VALUES (‘2‘, ‘bb‘, ‘bb‘, ‘bb‘, ‘bb‘); INSERT INTO `users` VALUES (‘3‘, ‘cc‘, ‘cc‘, ‘cc‘, ‘cc‘); INSERT INTO `users` VALUES (‘7‘, ‘admin‘, ‘admin‘, ‘12306‘, ‘北京天安门‘);
二 创建web项目,并导入相关jar包:
创建一个dynamic web project,然后在WEB-INF/lib下导入spring和hibernate的jar包,嫌麻烦的话也可以使用我用到的jar包,链接:http://pan.baidu.com/s/1kUse26z 。整个项目的结构是这样的:
三 创建视图页面user.jsp:
路径是:/WEB-INF/jsp/user/user.jsp,代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <base href="<%=basePath%>"> <title>Insert title here</title> </head> <body> <h1>Message : ${message}</h1> </body> </html>
四 根据数据库表的字段建立实体类Users.java:
实体类放在cn.zifangsky.entity包中,这里采用了注解的方式来配置,Users.java代码如下:
package cn.zifangsky.entity; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity(name="users") public class Users implements java.io.Serializable{ @Id @GeneratedValue(strategy=GenerationType.AUTO) @Column(name="UserID") private Integer userId; @Column(name="UserName",length=16) private String userName; @Column(name="Password",length=16) private String password; @Column(name="Telephone",length=16) private String telephone; @Column(name="Address",length=16) private String address; public Users(){ } public Users(Integer userId, String userName, String password, String telephone, String address) { this.userId = userId; this.userName = userName; this.password = password; this.telephone = telephone; this.address = address; } public Integer getUserId() { return userId; } public void setUserId(Integer userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getTelephone() { return telephone; } public void setTelephone(String telephone) { this.telephone = telephone; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }
五 处理框架整合的配置文件:
(1)首先是web.xml,路径是:WEB-INF/web.xml:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>Archetype Created Web Application</display-name> <!-- 配置Spring --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/classes/spring-*.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 定义DispatcherServlet --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/classes/springmvc-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!-- 设置字符集 --> <filter> <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> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 控制Session的开关 --> <filter> <filter-name>openSession</filter-name> <filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class> </filter> <filter-mapping> <filter-name>openSession</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
(2)spring mvc所需要用到的配置文件springmvc-servlet.xml,路径是:src/springmvc-servlet.xml:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd "> <!-- 启用spring mvc 注解 --> <mvc:annotation-driven /> <!-- 不操作静态资源 --> <mvc:default-servlet-handler /> <!-- 启动自动扫描该包下所有的Bean(例如@Controller) --> <context:component-scan base-package="cn.zifangsky.controller" /> <!-- 定义视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix"> <value>/WEB-INF/jsp/user/</value> </property> <property name="suffix"> <value>.jsp</value> </property> </bean> </beans>
(3)整合hibernate所需要用到的配置文件spring-hibernate.xml,这里为了简单只用了基础的jdbc数据源,路径是src/spring-hibernate.xml:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd "> <!-- 声明事务管理器 --> <bean id="myHibTxManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean> <!-- 定义事务通知 --> <tx:advice id="tx_Advice" transaction-manager="myHibTxManager"> <!-- 定义事务传播规则 --> <tx:attributes> <!-- 对get/load/search开头的方法应用只读事务规则 --> <tx:method name="get*" propagation="SUPPORTS" read-only="true" /> <tx:method name="load*" propagation="SUPPORTS" read-only="true" /> <tx:method name="search*" propagation="SUPPORTS" read-only="true" /> <!-- 对其他方法应用REQUIRED事务规则 --> <tx:method name="*" propagation="REQUIRED" /> </tx:attributes> </tx:advice> <aop:config> <!-- 对com.zxpm.biz包下的所有类的所有方法都应用事务规则 --> <aop:pointcut id="bizMethods" expression="execution(* cn.zifangsky.service.*.*(..))" /> <!-- 将事务通知和切面组合 --> <aop:advisor advice-ref="tx_Advice" pointcut-ref="bizMethods" /> </aop:config> <!-- 配置数据源 --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://127.0.0.1/zxpm" /> <property name="username" value="root" /> <property name="password" value="root" /> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="packagesToScan"> <list> <!-- 可以加多个包 --> <value>cn.zifangsky.entity</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.show_sql">true</prop> </props> </property> </bean> </beans>
(4)加载bean配置文件spring-bean.xml,当然具体的一些bean将在下一环节中配置,路径:src/spring-bean.xml:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" 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-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd"> <bean id="usersDAO" class="cn.zifangsky.dao.UsersDAO"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <bean id="userService" class="cn.zifangsky.service.UserService"> <property name="userDao" ref="usersDAO"></property> </bean> </beans>
六 业务处理DAO,Service和Controller:
(1)UsersDAO.java,在cn.zifangsky.dao这个包中:
package cn.zifangsky.dao; import java.util.List; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.springframework.orm.hibernate5.HibernateCallback; import org.springframework.orm.hibernate5.support.HibernateDaoSupport; import cn.zifangsky.entity.Users; public class UsersDAO extends HibernateDaoSupport{ public List<Users> getAllUser(){ Object execute = super.getHibernateTemplate().execute(new HibernateCallback<Object>() { public Object doInHibernate(Session session) throws HibernateException { String hql="from users"; Query query = session.createQuery(hql); return query.list(); } }); return (List<Users>) execute; } }
(2)UserService.java,在cn.zifangsky.service这个包中:
package cn.zifangsky.service; import cn.zifangsky.dao.UsersDAO; public class UserService { private UsersDAO userDao; public int userCount(){ return userDao.getAllUser().size(); } public UsersDAO getUserDao() { return userDao; } public void setUserDao(UsersDAO userDao) { this.userDao = userDao; } }
(3)UserController.java,在cn.zifangsky.controller这个包中:
package cn.zifangsky.controller; import javax.annotation.Resource; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.ModelAndView; import cn.zifangsky.service.UserService; @Controller @RequestMapping("/user") public class UserController { @Resource(name="userService") private UserService service; @RequestMapping(value="/manager",method=RequestMethod.GET) public ModelAndView hello2(){ ModelAndView mv = new ModelAndView(); mv.addObject("message", "HelloMVC"); mv.setViewName("user"); return mv; } @RequestMapping(value="/count",method=RequestMethod.GET) public ModelAndView count(){ int c = service.userCount(); ModelAndView mv = new ModelAndView(); mv.addObject("message", c); mv.setViewName("user"); return mv; } }
从上面的代码可以看出,定义了两个请求,分别是:http://localhost:8080/SpringDemo/user/manager 和 http://localhost:8080/SpringDemo/user/count ,分别返回一个字符串和users这个表中数据的条数。下面我们将对这两个请求进行测试
七 测试:
测试结果如下:
http://localhost:8080/SpringDemo/user/manager
http://localhost:8080/SpringDemo/user/count
可以看出,这个框架已经搭建成功了
注:如果在项目启动时报错的话,第一是检查配置文件中是不是有哪个地方写错了,第二是注意看下/WEB-INF/lib下有没有aopalliance.jar和aspectjweaver-1.5.4.jar这两个jar包。因为我刚开始时就是因为没有这两个jar包,在项目启动时各种报错,真的挺坑的
PS:参考文章:http://www.cnblogs.com/leiOOlei/p/3727859.html
欢迎大家有时间来我个人独立博客(http://www.zifangsky.cn)踩踩
本文出自 “zifangsky的个人博客” 博客,请务必保留此出处http://983836259.blog.51cto.com/7311475/1757750
以上是关于怎样搭建spring框架?的主要内容,如果未能解决你的问题,请参考以下文章