MyEclipse10StrutsSpringHibernate全注解框架搭建_第1頁(yè)
MyEclipse10StrutsSpringHibernate全注解框架搭建_第2頁(yè)
MyEclipse10StrutsSpringHibernate全注解框架搭建_第3頁(yè)
MyEclipse10StrutsSpringHibernate全注解框架搭建_第4頁(yè)
MyEclipse10StrutsSpringHibernate全注解框架搭建_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、.一、 新建web項(xiàng)目1. FileàNewàweb project2. 工程名稱:king-backà點(diǎn)選Java EE 6.0標(biāo)準(zhǔn)二、 添加ssh2支持1. 添加struts2工程上點(diǎn)右鍵àmyeclipseàadd struts capabilites點(diǎn)選struts2.1àurl模式點(diǎn)選 /*添加struts2 core lib和struts2 spring lib新建LoginAction類package com.frank.action;import com.opensymphony.xwork2.ActionSuppor

2、t;/* * author steve frank * */public class LoginAction extends ActionSupport private String name;private String password;public String getName() return name;public void setName(String name) = name;public String getPassword() return password;public void setPassword(String password) this.pas

3、sword = password;public String execute() if (name.equals("steve") && password.equals("123")return SUCCESS;elsereturn INPUT;修改struts.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-/Apache Software Foundation/DTD Struts

4、 Configuration 2.1/EN" "/dtds/struts-2.1.dtd"><struts><package name="default" namespace="/" extends="struts-default"><action name="login" class="com.frank.action.LoginAction"><result name=

5、"success">/success.jsp</result><result name="input">/fail.jsp</result></action></package></struts> 修改index.jsp<% page language="java" import="java.util.*" pageEncoding="UTF-8"%><% taglib prefix="s&

6、quot; uri="/struts-tags"%><!DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.01 Transitional/EN"><html><head><title>My JSP 'index.jsp' starting page</title></head><body><s:form action="login"><s:textfield name="nam

7、e" value="steve"></s:textfield><s:textfield name="password" value="123"></s:textfield><s:submit></s:submit></s:form></body></html> 添加success.jsp<% page language="java" import="java.util.*" pa

8、geEncoding="UTF-8"%><% taglib prefix="s" uri="/struts-tags"%><!DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.01 Transitional/EN"><html><head><title>My JSP 'success.jsp' starting page</title></head><body><s:

9、text name="password" /><hr /><s:property value="password" /><hr />$password<hr /></body></html>添加fail.jsp<% page language="java" import="java.util.*" pageEncoding="UTF-8"%><% taglib prefix="s"

10、 uri="/struts-tags"%><!DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.01 Transitional/EN"><html><head><title>My JSP 'fail.jsp' starting page</title></head><body>登錄失敗,用戶名或密碼錯(cuò)誤.</body></html>當(dāng)前web.xml如下,直接啟動(dòng)會(huì)報(bào)spring監(jiān)聽錯(cuò)誤,因?yàn)閯偛乓呀?jīng)

11、添加了spring支持struts的lib包。添加spring監(jiān)聽,重新啟動(dòng)會(huì)提示找不到spring配置文件。2. 添加spring右鍵àmyeclipseàadd spring capabilities勾選spring 3.0 aop lib,spring 3.0 core lib,spring 3.0 persistence core lib,spring 3.0 persistence jdbc lib,spring 3.0 web lib;點(diǎn)選copy checked library contents to project folder當(dāng)前web.xml如下,重新啟

12、動(dòng)tomcat,成功。打開瀏覽器,輸入http:/localhost:8088/king-back,(tomcat端口未修改過的應(yīng)該為8080),出現(xiàn)如下界面。直接點(diǎn)擊submit,成功跳轉(zhuǎn)到success.jsp,界面如下。如果修改用戶名為frank,如下點(diǎn)擊submit后跳轉(zhuǎn)到fail.jsp如下3. 添加hibernate先配置好數(shù)據(jù)源驅(qū)動(dòng),如下右鍵àmyeclipseàadd hibernate capabilities點(diǎn)選hibernate 3.3,勾選enable hibernate annotations support;勾選hibernate 3.3 ann

13、otations&entity manager,hibernate 3.3 core lib;點(diǎn)選copy checked library jars to project folder and add to build-path點(diǎn)選spring configuration file,交給spring配置數(shù)據(jù)源勾選existing spring configuration file選擇配置好的數(shù)據(jù)源驅(qū)動(dòng) 去掉create seesionfactory class的勾。然后點(diǎn)擊完成。三、 數(shù)據(jù)反向生成1. 新建文件夾com.frank.model,準(zhǔn)備放置生成的實(shí)體類和dao類2. 在項(xiàng)目

14、中新建data.sql文件,內(nèi)容如下,連接mysql的test庫(kù),新建表studentDROP TABLE IF EXISTS student;CREATE TABLE student ( id int(11) NOT NULL, name varchar(20) default NULL, role_id int(11) default NULL, PRIMARY KEY (id) ENGINE=InnoDB DEFAULT CHARSET=utf8;- - Records of student- -INSERT INTO student VALUES ('1', '

15、張三', '1');INSERT INTO student VALUES ('2', '李四', '2');INSERT INTO student VALUES ('3', '王五', '1');SELECT * FROM student;3. 生成Dao和實(shí)體類過程如下打開Test庫(kù),選擇student表,右鍵hibernate reverse engineering出現(xiàn)如下視圖,通過browse選擇king-back項(xiàng)目和com.frank.model文件夾結(jié)果如下,勾選

16、create pojo<> db table mapping informationà點(diǎn)選add hibernate mapping annotations to pojoà保留update hibernate configuration with mapping resource location;去掉create abstract class勾;勾選java data access object(dao) à勾選generate precise findby methodsà點(diǎn)選spring daoId generator 選擇nativ

17、e結(jié)果如下四、 編寫測(cè)試1. 新建test類package test;import java.util.List;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.frank.model.Student;import com.frank.model.StudentDAO;public class Test public static void main(String a

18、rgs) ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");StudentDAO dao = (StudentDAO) context.getBean("StudentDAO");List<Student> list = dao.findAll();int n = list.size();for (int i = 0; i < n; i+) Student c = list.get(i);String nam

19、e = c.getName();System.out.println(name);運(yùn)行結(jié)果如下,說明項(xiàng)目基本上是ok的。2. 修改action類public String execute() getData();if (name.equals("steve") && password.equals("123")return SUCCESS;elsereturn INPUT;private void getData() ApplicationContext context = new ClassPathXmlApplicationConte

20、xt("applicationContext.xml");StudentDAO dao = (StudentDAO) context.getBean("StudentDAO");List<Student> list = dao.findAll();int n = list.size();for (int i = 0; i < n; i+) Student c = list.get(i);String name = c.getName();System.out.println(name);刷新瀏覽器,查看控制臺(tái)打印結(jié)果。五、 添加注解配置

21、1. 修改struts.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-/Apache Software Foundation/DTD Struts Configuration 2.1/EN" "/dtds/struts-2.1.dtd"><struts><!- 開啟使用開發(fā)模式,詳細(xì)錯(cuò)誤提示 -><constant name=&

22、quot;struts.devMode" value="true" /><!- 將對(duì)象交給spring管理 -><constant name="struts.objectFactory" value="spring" /><!- 指定資源編碼類型 -><constant name="struts.i18n.encoding" value="UTF-8" /><!- 指定每次請(qǐng)求到達(dá),重新加載資源文件 -><cons

23、tant name="struts.i18n.reload" value="true" /><!- 指定每次配置文件更改后,自動(dòng)重新加載 -><constant name="struts.configuration.xml.reload" value="false" /><!- 國(guó)際化資源文件 -><constant name="struts.custom.i18n.resources" value="content/Language&q

24、uot; /><!- 瀏覽器緩存 -><constant name="struts.serve.static.browserCache" value="false" /><!- 默認(rèn)后綴名 -><constant name="struts.action.extension" value="do,action,jhtml," /><!- Struts Annotation -><constant name="actionPackages

25、" value="com.frank.action" /></struts>2. 修改LoginAction,在execute方法上添加Action(value = "login", results = Result(name = INPUT, location = "/index.jsp"),Result(name = SUCCESS, location = "/WEB-INF/content/success.jsp") )3. action注解完成,可以測(cè)試通過,接下來添加servi

26、ce注解等4. 修改applicationContext.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance" xmlns:p="/schema/p"xmlns:context

27、="/schema/context"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans-3.0.xsd /schema/context /schema/context/spring-context-3.0.xs

28、d "><bean id="dataSource" class="mons.dbcp.BasicDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver"></property><property name="url" value="jdbc:mysql:/localhost:3306/test"></property

29、><property name="username" value="root"></property><property name="password" value="admin"></property></bean><bean id="sessionFactory"class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFacto

30、ryBean"><property name="dataSource"><ref bean="dataSource" /></property><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop></props></prop

31、erty><property name="annotatedClasses"><list><value>com.frank.model.Student</value></list></property></bean><!- 使用 annotation 自動(dòng)注冊(cè)bean,并檢查Controller, Service, Repository注解已被注入 -><context:component-scan base-package="com.frank"

32、 /></beans>5. Service、dao 的接口和實(shí)現(xiàn)類StudentService.javapublic interface StudentService /* * 根據(jù)主鍵查詢Student * param id * return */public Student findById(Integer id);StudentServiceImpl.javaServicepublic class StudentServiceImpl implements StudentService Resourceprivate StudentDAO studentDAO;Over

33、ridepublic Student findById(Integer id) / TODO Auto-generated method stubreturn studentDAO.findById(id);StudentDAO.javapublic interface StudentDAOpublic abstract void save(Student transientInstance);public abstract void delete(Student persistentInstance);public abstract Student findById(java.lang.In

34、teger id);public abstract List<Student> findByExample(Student instance);public abstract List findByProperty(String propertyName, Object value);public abstract List<Student> findByName(Object name);public abstract List findAll();public abstract Student merge(Student detachedInstance);publ

35、ic abstract void attachDirty(Student instance);public abstract void attachClean(Student instance);StudentDAOImpl.javaRepositorypublic class StudentDAOImpl extends HibernateDaoSupport implements StudentDAO private static final Logger log = LoggerFactory.getLogger(StudentDAOImpl.class);/ property cons

36、tantspublic static final String NAME = "name"private SessionFactory sessionFacotry;Resourcepublic void setSessionFacotry(SessionFactory sessionFacotry) super.setSessionFactory(sessionFacotry);protected void initDao() / do nothing/* * (non-Javadoc) * * see com.frank.dao.impl.S#save(com.fran

37、k.model.Student) */Overridepublic void save(Student transientInstance) log.debug("saving Student instance");try getHibernateTemplate().save(transientInstance);log.debug("save successful"); catch (RuntimeException re) log.error("save failed", re);throw re;/* * (non-Javad

38、oc) * * see com.frank.dao.impl.S#delete(com.frank.model.Student) */Overridepublic void delete(Student persistentInstance) log.debug("deleting Student instance");try getHibernateTemplate().delete(persistentInstance);log.debug("delete successful"); catch (RuntimeException re) log.e

39、rror("delete failed", re);throw re;/* * (non-Javadoc) * * see com.frank.dao.impl.S#findById(java.lang.Integer) */Overridepublic Student findById(java.lang.Integer id) log.debug("getting Student instance with id: " + id);try Student instance = (Student) getHibernateTemplate().get(

40、"com.frank.model.Student", id);return instance; catch (RuntimeException re) log.error("get failed", re);throw re;/* * (non-Javadoc) * * see com.frank.dao.impl.S#findByExample(com.frank.model.Student) */Overridepublic List<Student> findByExample(Student instance) log.debug(&

41、quot;finding Student instance by example");try List<Student> results = (List<Student>) getHibernateTemplate().findByExample(instance);log.debug("find by example successful, result size: "+ results.size();return results; catch (RuntimeException re) log.error("find by e

42、xample failed", re);throw re;/* * (non-Javadoc) * * see com.frank.dao.impl.S#findByProperty(java.lang.String, * java.lang.Object) */Overridepublic List findByProperty(String propertyName, Object value) log.debug("finding Student instance with property: " + propertyName+ ", value:

43、 " + value);try String queryString = "from Student as model where model."+ propertyName + "= ?"return getHibernateTemplate().find(queryString, value); catch (RuntimeException re) log.error("find by property name failed", re);throw re;/* * (non-Javadoc) * * see com.

44、frank.dao.impl.S#findByName(java.lang.Object) */Overridepublic List<Student> findByName(Object name) return findByProperty(NAME, name);/* * (non-Javadoc) * * see com.frank.dao.impl.S#findAll() */Overridepublic List findAll() log.debug("finding all Student instances");try String query

45、String = "from Student"return getHibernateTemplate().find(queryString); catch (RuntimeException re) log.error("find all failed", re);throw re;/* * (non-Javadoc) * * see com.frank.dao.impl.S#merge(com.frank.model.Student) */Overridepublic Student merge(Student detachedInstance) lo

46、g.debug("merging Student instance");try Student result = (Student) getHibernateTemplate().merge(detachedInstance);log.debug("merge successful");return result; catch (RuntimeException re) log.error("merge failed", re);throw re;/* * (non-Javadoc) * * see com.frank.dao.imp

47、l.S#attachDirty(com.frank.model.Student) */Overridepublic void attachDirty(Student instance) log.debug("attaching dirty Student instance");try getHibernateTemplate().saveOrUpdate(instance);log.debug("attach successful"); catch (RuntimeException re) log.error("attach failed&q

48、uot;, re);throw re;/* * (non-Javadoc) * * see com.frank.dao.impl.S#attachClean(com.frank.model.Student) */Overridepublic void attachClean(Student instance) log.debug("attaching clean Student instance");try getHibernateTemplate().lock(instance, LockMode.NONE);log.debug("attach successf

49、ul"); catch (RuntimeException re) log.error("attach failed", re);throw re;六、 附加功能完善1. 添加log日志輸出log4j.rootLogger=WARN, console, logFile#Consolelog4j.appender.console=org.apache.log4j.ConsoleAppenderlog4j.appender.console.layout=org.apache.log4j.PatternLayoutlog4j.appender.console.layou

50、t.ConversionPattern=%d %p %c - <%m>%n#RollingFilelog4j.appender.logFile=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.logFile.File=./logs/king.loglog4j.appender.logFile.layout=org.apache.log4j.PatternLayoutlog4j.appender.logFile.layout.ConversionPattern=%d %p %c - <%m>%n2. 添加編碼

51、轉(zhuǎn)換web.xml<filter><filter-name>Set Character Encoding</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-para

52、m><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>Set Character Encoding</filter-name><url-pattern>/*</url-pattern></filter-mapping>3. 實(shí)體類配置修改<property name="annotatedClasses"><list><value>com.frank.model.Student</value></list>

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論