step1: 在myeclipse上新建一个web项目
step2: 加入struts2所需的包
freemarker-2.3.16
ognl-3.0
struts2-core-2.2.1
struts2-dojo-plugin-2.2.1
struts2-json-plugin-2.2.1
struts2-spring-2.2.1
xwork-core-2.2.1
step3:加入spring2.5
右键点击工程名称,MyEclipse->Add Spring Capabilities。
选择Spring version为Spring 2.5,选中Spring 2.5 AOP Libraries、Spring 2.5 Core Libraries、Spring 2.5 Persistence Core Libraries、Spring 2.5 Persistence JDBC Libraries、Spring 2.5 Web Libraries共5个包。选中Copy checked Library contents to project folder (TLDs always copied),点击Next。点击Next,点击Folder文本框后的Browse,在弹出对话框中选择spring配置文件存储位置为WebRoot/WEB-INF,点击Finish。至此已经完成加载Spring,在WEB-INF文件夹下已经生成了配置文件applicationContext.xml。
step4: 在data browser中新建一个connection
step5: hibernate
右键点击工程名称,MyEclipse->Add Hibernate Capabilities。
选择Hibernate Specification为Hibernate 3.2,选中所有包,选中Copy checked Library Jars to project folder and add to build-path,点击Next。
选择Spring configuration file (applicationContext.xml),点击Next。
选择Existing Spring configuration file,点击Next
只需在Bean Id文本框中输入一个Id名,作为数据库源的代用名,意义不大,采用默认设置即可。然后在DB Driver下拉列表中,选择上一步在MyEclipse中创建好的数据库源SQL Server 2005,其他信息将自动填写,点击Next。
在弹出对话框中去掉Create SessionFactory class?复选框,不创建该类,点击Finish完成。
选择Hibernate Specification为Hibernate 3.2,选中所有包,选中Copy checked Library Jars to project folder and add to build-path,点击Next。
选择Spring configuration file (applicationContext.xml),点击Next。
选择Existing Spring configuration file,点击Next
只需在Bean Id文本框中输入一个Id名,作为数据库源的代用名,意义不大,采用默认设置即可。然后在DB Driver下拉列表中,选择上一步在MyEclipse中创建好的数据库源SQL Server 2005,其他信息将自动填写,点击Next。
在弹出对话框中去掉Create SessionFactory class?复选框,不创建该类,点击Finish完成。
创建过程中,加载的jar包文件可能有重复,所以这个时候如果提示有某些jar包重复,选择Keep Existing即可。
6. Delete Conflictive Jars 手动删除三个重复的jar包(不能在build-path里面删除,在build-path里面删除无效): asm-2.2.3.jar cglib-2.1.3.jar xerces-2.6.2.jar
7. Create struts.xml Struts.xml代码 <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.objectFactory" value="spring" /> <include file="struts-default.xml"></include> <package name="default" extends="struts-default"> <action name="userInfoLogin" class="userInfoAction" method="login"> <result name="FAILURE">/MainWeb/failure.jsp </result> <result name="SUCCESS">/MainWeb/success.jsp</result> </action> </package> </struts> 8. 配置web.xml 配置web.xml文件,其内容如下: Web.xml代码 <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> </web-app> 9. 使用Myeclipse反向生成dao层 将前面数据源dataSource所示数据库SSH中的UserInfo表反向生成Hibernate实体类文件。 UserInfo.java UserInfoDaoImpl.java UserInfo.hbm.xml 不要生成abstract class,然后一路点击Next即可。 在com.shawnqiu.bean下生成三个文件UserInfo.java、UserInfoDAO.java、UserInfo.hbm.xml。将UserInfoDAO.java 更名为UserInfoDaoImpl.java,置于com.shawnqiu.dao.impl,将UserInfo.hbm.xml置于dbConfig下。 10. 创建UserInfoServiceImpl.java Java代码 package com.shawnqiu.service.impl; import java.util.*; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import com.shawnqiu.bean.UserInfo; public class UserInfoServiceImpl extends HibernateDaoSupport { //普通用户登录验证 @SuppressWarnings("unchecked") public boolean checkUser(String userName,String userPassword){ boolean flag = false; String hql = "from UserInfo as userInfo where userInfo.userName = '"+userName+"' and userInfo.userPassword = '"+userPassword+"'"; List<UserInfo> userInfoList = this.getHibernateTemplate().find(hql); if(userInfoList.size()>0){ flag = true; } return flag; } } 11. 创建UserInfoService.java 右键点击UserInfoServiceImpl.java,选择Refactor->Extract Interface。 设置Interface name为UserInfoService,同时选择Select All即可,点击OK。 如上图所示,UserInfoService.java和UserInfoServiceImpl.java在同一package中。右键点击UserInfoService.java,选择Refactor->Move 选择com.shawnqiu.service,点击OK即可。 12. 创建UserInfoAction.java Java代码 package com.shawnqiu.action; import com.opensymphony.xwork2.ActionSupport; import com.shawnqiu.service.UserInfoService; public class UserInfoAction extends ActionSupport{ private String userName; private String userPassword; public UserInfoService getUserInfoService() { return userInfoService; } public void setUserInfoService(UserInfoService userInfoService) { this.userInfoService = userInfoService; } private UserInfoService userInfoService; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserPassword() { return userPassword; } public void setUserPassword(String userPassword) { this.userPassword = userPassword; } public String execute(){ // String page = "FAILURE"; // boolean flag = false; // flag = personManage.checkUser(userName, userPassword); // if(flag){ // page = "SUCCESS"; // } // return page; return ""; } public String login(){ String page = "FAILURE"; boolean flag = false; flag = userInfoService.checkUser(userName, userPassword); if(flag){ page = "SUCCESS"; } return page; } } 13. 创建Jsp Pages 首先在WebRoot下新建一个MainWeb文件夹,并同时创建3个文件,分别是login.jsp、success.jsp、failure.jsp,源代码如下。 login.jsp Jsp代码 <html> <head> <title>用户登录</title> </head> <body> <center> <div id="login"> <s:form action="userInfoLogin"> <s:textfield label="用户名" name="userName"></s:textfield> <s:password label="密码" name="userPassword"></s:password> <s:submit value="登录"></s:submit> </s:form> </div> </center> </body> </html> success.jsp Jsp代码 <%@ page language="java" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Failure</title> </head> <body> 登录成功!<br> </body> </html> failure.jsp Jsp代码 <%@ page language="java" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Failure</title> </head> <body> 登录失败!<br> </body> </html> 14. 配置applicationContext.xml Applicationcontext.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:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"> </property> <property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=SSH"> </property> <property name="username" value="sa"></property> <property name="password" value="Wxzy!@%&"></property> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource" /> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.SQLServerDialect </prop> </props> </property> <property name="mappingResources"> <list> <value>dbConfig/UserInfo.hbm.xml</value> </list> </property> </bean> <bean id="userInfoServiceImpl" class="com.shawnqiu.service.impl.UserInfoServiceImpl" abstract="false" lazy-init="default" autowire="default" dependency-check="default" scope="prototype"> <property name="sessionFactory" > <ref local="sessionFactory"/> </property> </bean> <bean id="userInfoAction" class="com.shawnqiu.action.UserInfoAction" scope="prototype"> <property name="userInfoService"> <ref bean="userInfoServiceImpl" /> </property> </bean> </beans> 15. 创建log4j.properties Log4j.properties代码 # Set root category priority to INFO and its only appender to CONSOLE. log4j.rootCategory=INFO, CONSOLE #log4j.rootCategory=INFO, CONSOLE, LOGFILE # Set the enterprise logger category to FATAL and its only appender to CONSOLE. log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE # CONSOLE is set to be a ConsoleAppender using a PatternLayout. log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.Threshold=INFO log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=- %m%n # LOGFILE is set to be a File appender using a PatternLayout. log4j.appender.LOGFILE=org.apache.log4j.FileAppender log4j.appender.LOGFILE.File=axis.log log4j.appender.LOGFILE.Append=true log4j.appender.LOGFILE.Threshold=INFO log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout log4j.appender.LOGFILE.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n |