用SSH(struts2、spring、hibernate)做一个登录
首先创建一个web项目
然后分别添加Struts2支持、spring支持、hibernate支持
添加log4j.properties配置文件
代码如图
#配置根 Logger
og4j.rootLogger = INFO , appender1, appender2,appender3
#配置日志信息输出目的地(appender)
#appender1 输出到控制台
log4j.appender.appender1 = org.apache.log4j.ConsoleAppender
log4j.appender.appender1.Threshold = INFO
log4j.appender.appender1.Target = System.err
log4j.appender.appender1.layout = org.apache.log4j.TTCCLayout
#appender2 输出到文件
log4j.appender.appender2 = org.apache.log4j.FileAppender
log4j.appender.appender2.Threshold = INFO
log4j.appender.appender2.File=E:/logs/logging.log
log4j.appender.appender2.layout = org.apache.log4j.PatternLayout
log4j.appender.appender2.layout.ConversionPattern = %p %d{yyyy/MM/dd HH:mm:ss,SSS} %1
#appender3 输出到 HTML
log4j.appender.appender3 = org.apache.log4j.FileAppender
log4j.appender.appender3.Threshold = INFO
log4j.appender.appender3.File=E:/logs/logging.html
log4j.appender.appender3.layout = org.apache.log4j.HTMLLayout
log4j.appender.appender3.layout.Title = Demo04SSH log
然后完善项目自动生成的applicationContext.xml文件:开启注解、加载配置文件、配置数据库源、Hibernate的sessionFactory session工厂注入、配置映射文件所在的目录、配置声明式事务管理(采用注解的方式)、开启注解事务
部分代码
<!-- 开启注解 -->
<context:annotation-config />
<!-- spring 扫描路径,注意当前工程只需要扫描dao和service -->
<context:component-scan base-package="com.mp.dao,com.mp.service" />
<!-- 加载配置文件 -->
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>classpath:jdbc.properties</value>
</property>
</bean>
<!-- 配置数据库源 数据库的链接信息 -->
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" >
<value>${driver}</value>
</property>
<property name="url">
<value>${url}</value>
</property>
<property name="username">
<value>${username}</value>
</property>
<property name="password">
<value>${password}</value>
</property>
</bean>
<!-- Hibernate的sessionFactory session工厂 注入 -->
<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.MySQLDialect
</prop>
</props>
</property>
<!-- <property name="mappingResources">
<list>
<value>com/mp/po/User.hbm.xml</value>
<value>com/mp/po/Role.hbm.xml</value></list>
</property> -->
<!-- 配置映射文件所在的目录 -->
<property name="mappingDirectoryLocations">
<list>
<value>classpath:cfg/po/</value>
</list>
</property>
</bean>
<!-- 配置声明式事务管理(采用注解的方式) -->
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- 开启注解事务 -->
<tx:annotation-driven transaction-manager="txManager"/>
编写dao、po、service层代码
Location控制代码
public class LoginAction extends ActionSupport implements ModelDriven<User> {
@Autowired
IUserService userService;
private User user;
@Override
public User getModel() {
if (user==null) {
user=new User();
}
return user;
}
public String login(){
User rUser=userService.login(user);
if (rUser!=null) {
return SUCCESS;
} else {
return ERROR;
}
}
}
配置struts.xml文件
把struts2交给spring管理,struts2框架就会把bean转发给spring来创建、装配、注入。但是bean创建完成后,还是由struts容器来管理其生命周期
部分代码
<!-- constant 配置 -->
<!-- 用于设置默认的本地编码 -->
<constant name="struts.il8n.encoding" value="UTF-8" />
<!-- 指定请求后缀为.action,指定多个请求后缀用逗号分隔 -->
<constant name="struts.action.extension" value="action" />
<!-- 设置浏览器是否缓存静态内容,建议:开发阶段关闭,运行时开启 -->
<constant name="struts.serve.static.browserCache" value="false" />
<!-- 当struts.xml配置文件修改后,系统是否重新加载该文件,开发阶段打开此功能 -->
<constant name="struts.configuration.xml.reload" value="true"/>
<!-- 开发提示:出错时打印更详细的信息,开发阶段打开此功能 -->
<constant name="struts.devMode" value="true" />
<!-- Struts2交给spring管理 -->
<!-- struts2框架就会把bean转发给spring来创建,装配,注入。但是bean创建完成之后,还是由struts容器来管理其生命周期 -->
<constant name="struts.objectFactory" value="spring" />
<package name="user" namespace="/" extends="struts-default">
<action name="loginAction" class="com.mp.web.LoginAction">
<result name="success">/jsp/success.jsp</result>
<result name="error">/jsp/error.jsp</result>
</action>
</package>
然后写三个jsp页面,登录的、登录成功跳转的、登录失败跳转的
运行的效果
然后输入用户名密码登录就好了。