Eclipse搭建SSH(Struts2+Spring3+Hibernate3)实践
来源:互联网 发布:数据库crow s foot图 编辑:程序博客网 时间:2024/05/22 12:24
最近要用到SSH做项目,之前没有完整的用过SSH,现在写下怎么在eclipse中怎么用SSH。
第一步:将SSH要用到的jar包拷贝到lib目录下。
链接在这里:
http://pan.baidu.com/s/1qWxyrDy
第二步:搭建struts2:
新建一堆一堆的的包和类,以登录为例,截图:
首先来编写action类,lognAction
package com.ssh.action;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;import com.ssh.forms.UserForm;import com.ssh.service.UserManger;public class LoginAction extends ActionSupport {private UserForm user;private UserManger userManager;public UserForm getUser() {return user;}public void setUser(UserForm user) {this.user = user;}public UserManger getUserManager() {return userManager;}public void setUserManager(UserManger userManager) {this.userManager = userManager;}public String login() {int userId = userManager.login(user);if (userId > 0 ) {HttpServletRequest request = ServletActionContext.getRequest();HttpSession session = request.getSession();session.setAttribute("username", user.getUsername());System.out.println("login success");return SUCCESS;} return ERROR;}}
这一步UserManager可以是空的,我是打算全部搭建完毕后才运行的,因此先搁着不写。
表单类如下:
package com.ssh.forms;public class UserForm {private String username;private String password;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;}}
配置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.i18n.encoding" value="utf8"/><package name="default" extends="struts-default"><result-types> <result-type name="json" class="org.apache.struts2.json.JSONResult"/> </result-types> <interceptors> <interceptor name="json" class="org.apache.struts2.json.JSONInterceptor"/> </interceptors><action name="register" class="regAction"><result name="success">/success.jsp</result><result name="error">/error.jsp</result><result name="input">/Register.jsp</result></action><action name="check" class="checkBean"><result type="json"></result></action> <action name="login" class="loginBean" method="login"><result name="success">/index.jsp</result><result name="error">/index.jsp</result><result name="input">/index.jsp</result></action></package></struts>
由于这里有注册的信息,注册的时候要检查用户,用ajax异步提交的,返回json数据。
ok,到这里struts配置完毕
差点忘了,在这里在web.xml加入拦截
<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>因为我是配置完成的,所以这里有spring的信息。
整合Hibernate
编写POJO类User.java的Hibernate映射文件User.hbm.xml的内容。代码<generator class="native"></generator>说明将根据本地数据库的设置来创建userId,如MySQL中将表user的userId设置为自动增长,则在保存记录是,userId将自动增长。对于需要在程序中指定主键的值,则将generator的class属性设置为assigned。
<?xml version="1.0" encoding='UTF-8'?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" ><hibernate-mapping package="com.ssh.beans"><class name="User" table="user"><id name="userId" column="userId"><generator class="native"></generator></id><property name="username" column="userName" type="java.lang.String"not-null="true" length="16"></property><property name="password" column="password" type="java.lang.String"not-null="true" length="16" /> </class></hibernate-mapping>
package com.ssh.beans;public class User {private String username;private String password;private int userId;public int getUserId() {return userId;}public void setUserId(int 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;}}
整合Spring
编写Spring的配置文件applicationContext.xml。路径:src目录下,需要在web.xml配置context-param指定路径,或者把该文件放在WEB-INF下,跟web.xml同目录。我是放在了和web.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"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"><!-- 定义数据源的信息 --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"destroy-method="close"><property name="driverClass"><value>com.mysql.jdbc.Driver</value></property><property name="jdbcUrl"><value>jdbc:mysql://localhost/caba</value></property><property name="user"><value>root</value></property><property name="password"><value>root</value></property><property name="maxPoolSize"><value>80</value></property><property name="minPoolSize"><value>1</value></property><property name="initialPoolSize"><value>1</value></property><property name="maxIdleTime"><value>20</value></property></bean><!--定义Hibernate的SessionFactory --><!-- SessionFactory使用的数据源为上面的数据源 --><!-- 指定了Hibernate的映射文件和配置信息 --><bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><property name="dataSource"><ref local="dataSource" /></property><property name="mappingResources"><list><value>com/ssh/beans/User.hbm.xml</value></list></property><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop><prop key="show_sql">true</prop><prop key="hibernate.jdbc.batch_size">20</prop></props></property></bean><bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory" /></bean><bean id="baseDao" class="com.ssh.daoImpl.UserDao"><property name="sessionFactory"><ref bean="sessionFactory" /></property></bean><!--用户注册业务逻辑类 --><bean id="userManager" class="com.ssh.serviceImpl.UserMangerImpl"><property name="dao"><ref bean="baseDao" /></property></bean><!-- 用户注册的Action --><bean id="regAction" class="com.ssh.action.RegisterAction"><property name="userManager"><ref bean="userManager" /></property></bean><bean id="checkBean" class="com.ssh.action.CheckUserAction"><property name="userManager"><ref bean="userManager" /></property></bean><bean id="loginBean" class="com.ssh.action.LoginAction"><property name="userManager"><ref bean="userManager" /></property></bean> <!-- more bean definitions go here --></beans>
完成的接口类Dao和实现类UserDao的内容
package com.ssh.dao;import java.util.List; public interface BaseDao { public void saveObject(Object obj);public List findByProperty(String propertyName, Object value);public List findByUsername(Object username);public int findUserByNameAndPass(String username,String password); }
package com.ssh.daoImpl;import java.util.List; import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.ssh.beans.User;import com.ssh.dao.BaseDao;public class UserDao extends HibernateDaoSupport implements BaseDao{ @Overridepublic void saveObject(Object obj) {// TODO Auto-generated method stub getHibernateTemplate().save(obj);}@Overridepublic List findByProperty(String propertyName, Object value) {// TODO Auto-generated method stub try{String queryString = "from User as model where model."+ propertyName + "= ?";return getHibernateTemplate().find(queryString, value);} catch (RuntimeException re){ throw re;}}@Overridepublic List findByUsername(Object username) {// TODO Auto-generated method stubreturn findByProperty("username",username);}@Overridepublic int findUserByNameAndPass(String username, String password) {// TODO Auto-generated method stubString[] args = {username,password};String querString = "from User as user where user.username =? and user.password=?";List result = getHibernateTemplate().find(querString,args);if (result.size()>0){User user = (User)result.get(0);return user.getUserId();}return -1;} }
完成业务逻辑类
业务逻辑接口:
package com.ssh.service;import com.ssh.forms.UserForm;public interface UserManger {public void regUser(UserForm user);public boolean checkUser(UserForm user);public int login(UserForm user);}
实现类:
package com.ssh.serviceImpl;import java.util.List;import org.springframework.beans.BeanUtils;import com.ssh.beans.User;import com.ssh.dao.BaseDao;import com.ssh.forms.UserForm;import com.ssh.service.UserManger;public class UserMangerImpl implements UserManger {private BaseDao dao;@Overridepublic void regUser(UserForm user) {// TODO Auto-generated method stubUser u = new User();BeanUtils.copyProperties(user, u);dao.saveObject(u);} public void setDao(BaseDao dao) {this.dao = dao;}@Overridepublic boolean checkUser(UserForm user) {// TODO Auto-generated method stubUser u = new User();BeanUtils.copyProperties(user, u);List l = dao.findByUsername(u.getUsername());if( l.size() > 0) return false;else return true;}@Overridepublic int login(UserForm user) {// TODO Auto-generated method stubUser u = new User();BeanUtils.copyProperties(user, u);return dao.findUserByNameAndPass(u.getUsername(), u.getPassword()); }}
login.jsp:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>login</title><link rel="stylesheet" type="text/css" href="dist/css/bootstrap.min.css"><style type="text/css"> body { padding-top: 40px; padding-bottom: 40px; background-color: #f5f5f5; } .form-signin { max-width: 500px; height:350px; padding: 19px 29px 29px; margin: 0 auto 20px; background-color: #fff; border: 1px solid #e5e5e5; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.05); -moz-box-shadow: 0 1px 2px rgba(0,0,0,.05); box-shadow: 0 1px 2px rgba(0,0,0,.05); } .form-signin .form-signin-heading, .form-signin .checkbox { margin-bottom: 10px; } .form-signin input[type="text"], .form-signin input[type="password"] { font-size: 16px; height: auto; width:300px; margin-bottom: 25px; padding: 7px 9px; } </style> </head><body><div class="container"> <form class="form-signin" action="login.action" method="post"> <h2 class="form-signin-heading">请登录</h2> <input type="text" class="input-block-level" placeholder="用户名" name="user.username"> <input type="password" class="input-block-level" placeholder="密码" name="user.password"> <button class="btn btn-large btn-primary" style="width:200px" type="submit">登录</button> </form> </div> <!-- /container --></body></html>
效果如下:
0 0
- Eclipse搭建SSH(Struts2+Spring3+Hibernate3)实践
- Eclipse搭建SSH(Struts2+Spring3+Hibernate3)框架项目教程
- Eclipse搭建SSH(Struts2+Spring3+Hibernate3)框架项目教程
- Eclipse搭建SSH(Struts2+Spring3+Hibernate3)框架项目教程
- Eclipse搭建SSH(Struts2+Spring3+Hibernate3)框架项目教程
- Eclipse搭建SSH(Struts2+Spring3+Hibernate3)框架项目教程
- Eclipse搭建SSH(Struts2+Spring3+Hibernate3)框架项目教程
- Eclipse搭建SSH(Struts2+Spring3+Hibernate3)框架项目教程
- Eclipse搭建SSH(Struts2+Spring3+Hibernate3)框架项目教程
- Eclipse搭建SSH(Struts2+Spring3+Hibernate3)框架项目教程
- Eclipse搭建SSH(Struts2+Spring3+Hibernate3)框架项目教程
- Eclipse搭建SSH(Struts2+Spring3+Hibernate3)框架项目教程
- Eclipse搭建SSH(Struts2+Spring3+Hibernate3)框架项目教程
- Eclipse搭建SSH(Struts2+Spring3+Hibernate3)框架项目教程
- Eclipse搭建SSH(Struts2+Spring3+Hibernate3)框架项目教程
- Eclipse搭建SSH(Struts2+Spring3+Hibernate3)框架项目教程
- Eclipse搭建SSH(Struts2+Spring3+Hibernate3)框架项目教程
- Eclipse搭建SSH(Struts2+Spring3+Hibernate3)框架项目教程
- dojo小例子(6)页面打开后,请求数据,把反馈数据回填页面
- 在java中如何跳出当前的多重循环
- C#面向过程集锦
- 454 .sff剪切并转fasta 或 fastq
- Unique Path II
- Eclipse搭建SSH(Struts2+Spring3+Hibernate3)实践
- 思考与总结【2】:好习惯受益终生
- unzip (linux命令)
- 读书笔记--为人处世之道
- SAS学习笔记(四)——关于数据整合的几个细节
- The j.u.c Synchronizer Framework翻译
- kinect for windows - DepthBasics-D2D详解之一
- 使用mediainfo库取得媒体文件的tag
- ExtJs开发工具 sencha破解方法