




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 交易合同履行情況統(tǒng)計(jì)表
- 消防施工方案怎么寫
- 鞋店設(shè)計(jì)施工方案
- 企業(yè)股權(quán)激勵(lì)方案及效果研究的國(guó)內(nèi)外文獻(xiàn)綜述6100字
- 亳州輕型木屋施工方案
- 玻璃展館設(shè)計(jì)施工方案
- 法院旁聽審警示教育活動(dòng)方案
- 菱形吊頂快速施工方案
- DB3707T 136-2025 無(wú)籽西瓜秋延遲栽培技術(shù)規(guī)程
- 預(yù)制板墻保溫墻施工方案
- 【中國(guó)民航安檢的發(fā)展現(xiàn)狀及發(fā)展建議4000字(論文)】
- Audio-Jack-連接器設(shè)計(jì)經(jīng)驗(yàn)
- 硬筆控筆訓(xùn)練字帖
- 電子技術(shù)基礎(chǔ)數(shù)字部分第五版康華光
- 國(guó)際學(xué)校六年級(jí)數(shù)學(xué)測(cè)(英文)
- 國(guó)家自然科學(xué)基金經(jīng)費(fèi)預(yù)算表模板
- 儲(chǔ)能技術(shù)-氫儲(chǔ)能
- 黑河對(duì)俄邊境旅游的發(fā)展現(xiàn)狀及對(duì)策研究
- 為人民服務(wù) 公開課比賽一等獎(jiǎng)
- YY/T 1712-2021采用機(jī)器人技術(shù)的輔助手術(shù)設(shè)備和輔助手術(shù)系統(tǒng)
- 高中語(yǔ)文部編版(2023)選擇性必修中冊(cè)第三單元9屈原列傳 屈原列傳(解析版)
評(píng)論
0/150
提交評(píng)論