myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

【MyEclipse】:SSH快速搭建ssh搭建的前提,需要掌握 spring,struts2,hibernate
这是一种快速搭建的方式,框架基本上都是自动生成好 。
如有不足之处,请指教!
@
目录

  • 【MyEclipse】:SSH快速搭建
        • 1、数据库表
        • 2、新建项目
          • 2.1、创建一个web project项目
          • 2.2、导入spring
          • 2.3、添加 struts2
          • 2.4、添加 Hibernate
          • 2.5、逆向工程,生成实体类
          • 2.6、配置 web.xml
          • 2.7、数据编写
        • 3、视图层
          • index.jsp
          • list.jsp
          • add.jsp
          • update.jsp
          • 执行效果:
          • 最终目录结构:

1、数据库表create table users( uid INT auto_increment PRIMARY KEY, uname VARCHAR(20) NOT NULL, usex VARCHAR(2) NOT NULL, ubirth TIMESTAMP DEFAULT CURRENT_TIMESTAMP not null)DEFAULT CHARSET=utf8;insert into users values(null,"张珊",'女',DEFAULT);insert into users values(null,"李四",'男',DEFAULT);insert into users values(null,"王五",'男',DEFAULT);insert into users values(null,"赵柳",'女',DEFAULT);2、新建项目2.1、创建一个web project项目【myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建】
myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

文章插图
2.2、导入spring
myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

文章插图

myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

文章插图
spring 添加玩以后,会多出很多的jar 包和一个配置文件 applicationContext.xml
myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

文章插图
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-3.0.xsd"></beans>2.3、添加 struts2导入 struts2
myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

文章插图


myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

文章插图


myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

文章插图
项目结构
myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

文章插图
struts.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts></struts>2.4、添加 Hibernate
  1. 导入hibernate

myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

文章插图


myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

文章插图


myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

文章插图


myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

文章插图


myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

文章插图


myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

文章插图
  1. Hibernate 的配置自动添加到 applicationContext.xml文件中
<!-- 连接池 --><bean id="dataSource"class="org.apache.commons.dbcp.BasicDataSource"><property name="driverClassName"value="https://tazarkount.com/read/com.mysql.jdbc.Driver"></property><property name="url"value="https://tazarkount.com/read/jdbc:mysql://localhost:3306/myschool"></property><property name="username" value="https://tazarkount.com/read/root"></property><property name="password" value="https://tazarkount.com/read/root"></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.MySQLDialect</prop></props></property></bean>2.5、逆向工程,生成实体类
  1. 连接 mysql 数据库

myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

文章插图

myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

文章插图


myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

文章插图
  1. 导入数据库表

    myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

    文章插图


    myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

    文章插图


    myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

    文章插图


    myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

    文章插图
项目结构
myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

文章插图
  1. 在 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" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.0.xsd "> <bean id="dataSource"class="org.apache.commons.dbcp.BasicDataSource"><property name="driverClassName"value="https://tazarkount.com/read/com.mysql.jdbc.Driver"></property><property name="url"value="https://tazarkount.com/read/jdbc:mysql://localhost:3306/myschool"></property><property name="username" value="https://tazarkount.com/read/root"></property><property name="password" value="https://tazarkount.com/read/root"></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.MySQLDialect</prop></props></property><property name="mappingResources"><list><value>com/ssh/pojo/Users.hbm.xml</value></list></property> </bean><!-- 事务 --> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory"/> </bean><!-- 注解--> <tx:annotation-driven/><bean id="UsersDAO" class="com.ssh.pojo.UsersDAO"><property name="sessionFactory"><ref bean="sessionFactory" /></property> </bean> </beans>注意:
myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

文章插图
2.6、配置 web.xml
  1. 配置 Context Params

myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

文章插图
  1. Filters 过滤器

myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

文章插图


myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

文章插图


myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

文章插图

myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

文章插图


myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

文章插图

myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

文章插图


myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

文章插图


myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

文章插图
  1. Listeners 监听器

    myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

    文章插图


    myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

    文章插图


    myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

    文章插图


    myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

    文章插图
  2. 保存,web.xml就配置完了
  3. 部署到Tomcat服务器上,无报错,即搭建成功!
2.7、数据编写
  1. 建立基本结构
    • com.ssh.action
    • com.ssh.dao
    • com.ssh.pojo
    • com.ssh.service
  2. 实体类和dao层
    实体类
public class Users implements java.io.Serializable { private Integer uid; private String uname; private String usex; private Timestamp ubirth;//get/set方法,有参无参构造函数,toString();}? dao层
package com.ssh.dao;import java.sql.Timestamp;import java.util.List;import org.hibernate.LockMode;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.context.ApplicationContext;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.ssh.pojo.Users;public class UsersDAO extends HibernateDaoSupport {private static final Logger log = LoggerFactory.getLogger(UsersDAO.class);// property constantspublic static final String UNAME = "uname";public static final String USEX = "usex";protected void initDao() {// do nothing}public void save(Users transientInstance) {log.debug("saving Users instance");try {getHibernateTemplate().save(transientInstance);log.debug("save successful");} catch (RuntimeException re) {log.error("save failed", re);throw re;}}public void delete(Users persistentInstance) {log.debug("deleting Users instance");try {getHibernateTemplate().delete(persistentInstance);log.debug("delete successful");} catch (RuntimeException re) {log.error("delete failed", re);throw re;}}public Users findById(java.lang.Integer id) {log.debug("getting Users instance with id: " + id);try {Users instance = (Users) getHibernateTemplate().get("com.ssh.pojo.Users", id);return instance;} catch (RuntimeException re) {log.error("get failed", re);throw re;}}public List findByExample(Users instance) {log.debug("finding Users instance by example");try {List results = getHibernateTemplate().findByExample(instance);log.debug("find by example successful, result size: "+ results.size());return results;} catch (RuntimeException re) {log.error("find by example failed", re);throw re;}}public List findByProperty(String propertyName, Object value) {log.debug("finding Users instance with property: " + propertyName+ ", value: " + value);try {String queryString = "from Users as model where model."+ propertyName + "= ?";return getHibernateTemplate().find(queryString, value);} catch (RuntimeException re) {log.error("find by property name failed", re);throw re;}}public List findByUname(Object uname) {return findByProperty(UNAME, uname);}public List findByUsex(Object usex) {return findByProperty(USEX, usex);}public List findAll() {log.debug("finding all Users instances");try {String queryString = "from Users";return getHibernateTemplate().find(queryString);} catch (RuntimeException re) {log.error("find all failed", re);throw re;}}public Users merge(Users detachedInstance) {log.debug("merging Users instance");try {Users result = (Users) getHibernateTemplate().merge(detachedInstance);log.debug("merge successful");return result;} catch (RuntimeException re) {log.error("merge failed", re);throw re;}}public void attachDirty(Users instance) {log.debug("attaching dirty Users instance");try {getHibernateTemplate().saveOrUpdate(instance);log.debug("attach successful");} catch (RuntimeException re) {log.error("attach failed", re);throw re;}}public void attachClean(Users instance) {log.debug("attaching clean Users instance");try {getHibernateTemplate().lock(instance, LockMode.NONE);log.debug("attach successful");} catch (RuntimeException re) {log.error("attach failed", re);throw re;}}public static UsersDAO getFromApplicationContext(ApplicationContext ctx) {return (UsersDAO) ctx.getBean("UsersDAO");}}
  1. Users.hbm.xml
    注意:里面的 not null = ‘true’ 需要删除,不然做曾删改时会报错!
    如果没删传对象时所有属性都不能为空!
<?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><class name="com.ssh.pojo.Users" table="users" catalog="myschool"><id name="uid" type="java.lang.Integer"><column name="uid" /><generator class="identity" /></id><property name="uname" type="java.lang.String"><column name="uname" length="20" /></property><property name="usex" type="java.lang.String"><column name="usex" length="2" /></property><property name="ubirth" type="java.sql.Timestamp"><column name="ubirth" length="19"/></property></class></hibernate-mapping>
  1. 编写Service层的接口和实现类
    接口
package com.ssh.service;import java.util.List;import com.ssh.pojo.Users;public interface UsersService { //查询所有用户 List<Users> queryUsersList();//单值查询 Users queryUsers();//添加 void addUsers(Users users);//修改 void updateUsers(Users users);//删除 void delUsers(Users users);}?实现类
package com.ssh.service;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.transaction.annotation.Transactional;import com.ssh.dao.UsersDAO;import com.ssh.pojo.Users;public class UsersServiceImpl implements UsersService {private UsersDAO usersDAO;public void setUsersDAO(UsersDAO usersDAO) {this.usersDAO = usersDAO; }//添加 @Autowired @Transactional public void addUsers(Users users) {usersDAO.save(users);}//删除 @Autowired @Transactional public void delUsers(Users users) {usersDAO.delete(users);} //单值查询 public Users queryUsers(int uid) {return (Users) usersDAO.findById(uid); }//查询所有 public List<Users> queryUsersList() {return usersDAO.findAll(); } //修改 @Autowired//自动装配 @Transactional//开启事务行为,曾删改 public void updateUsers(Users users) {usersDAO.merge(users);}}
  1. 编写action层
package com.ssh.action;import java.util.List;import javax.servlet.http.HttpSession;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;import com.ssh.pojo.Users;import com.ssh.service.UsersService;public class UsersAction extends ActionSupport { private UsersService usersService;private Users users;private List<Users> list;private int uid;//get/set方法public void setUsersService(UsersService usersService) {this.usersService = usersService; }@Override public String execute() throws Exception {// TODO Auto-generated method stubreturn super.execute(); }//查询所有用户 public String list() throws Exception {list = usersService.queryUsersList();return "list";}//单值查询 public String query() throws Exception {Users user = usersService.queryUsers(uid);//获取session会话HttpSession session = ServletActionContext.getRequest().getSession();//给session赋值session.setAttribute("user", user);//返回return "query";} //添加 public String add() throws Exception {usersService.addUsers(users);return list(); } //删除 public String del() throws Exception {usersService.delUsers(users);return list(); }//修改 public String update() throws Exception {usersService.updateUsers(users);return list(); }}
  1. 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" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.0.xsd "> <bean id="dataSource"class="org.apache.commons.dbcp.BasicDataSource"><property name="driverClassName"value="https://tazarkount.com/read/com.mysql.jdbc.Driver"></property><property name="url"value="https://tazarkount.com/read/jdbc:mysql://localhost:3306/myschool"></property><property name="username" value="https://tazarkount.com/read/root"></property><property name="password" value="https://tazarkount.com/read/root"></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.MySQLDialect</prop></props></property><property name="mappingResources"><list><value>com/ssh/pojo/Users.hbm.xml</value></list></property> </bean><!-- 事务 --> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory"/> </bean><!-- 注解--> <tx:annotation-driven/><!-- dao层 --> <bean id="usersDAO" class="com.ssh.dao.UsersDAO"><property name="sessionFactory"><ref bean="sessionFactory" /></property> </bean><!-- service层 --> <bean id="usersService" class="com.ssh.service.UsersServiceImpl"><property name="usersDAO" ref="usersDAO"/> </bean><!-- action层 --> <bean id="usersAction" class="com.ssh.action.UsersAction"><property name="usersService" ref="usersService"/> </bean> </beans>
  1. struts.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts> <package name="users" namespace="/users" extends="struts-default"><action name="usersAction_*" method="{1}" class="com.ssh.action.UsersAction"><result name="list">/list.jsp</result><result name="query">/update.jsp</result></action> </package></struts>3、视图层index.jsp<h1><a href="javaScript:location.href='users/usersAction_list'">去list.jsp</a></h1>list.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><base href="https://tazarkount.com/read/"><title>My JSP 'list.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="https://tazarkount.com/read/styles.css">--></head><body><table align="center" cellpadding="1" cellspacing="1" border="1" width="600px;"><caption><h1>用户信息</h1></caption><caption><h3><a href="https://tazarkount.com/read/add.jsp">添加用户</a></h3></caption><tr><th>编号</th><th>姓名</th><th>性别</th><th>生日</th><th>操作</th></tr><c:forEach items="${list}" var="user"><tr><td>${user.uid }</td><td>${user.uname }</td><td>${user.usex }</td><td>${user.ubirth }</td><td><a href="javaScript:location.href='users/usersAction_query?uid=${user.uid}'">修改</a>&emsp;<a href="javaScript:delUsers(${user.uid})">删除</a></td></tr></c:forEach></table><script>function delUsers(id){if(confirm("确认删除吗?")){location.href="https://tazarkount.com/read/users/usersAction_del?users.uid="+id;}}</script></body></html>add.jsp<form action="users/usersAction_add" method="post"><tablealign="center" cellpadding="1" cellspacing="1" border="1" width="300px;"><caption><h3>添加用户</h3></caption><tr><th>姓名</th><td><input name="users.uname" type="text"/></td></tr><tr><th>性别</th><td><input name="users.usex" type="radio" value="https://tazarkount.com/read/男" checked="checked"/>男&emsp;<input name="users.usex" type="radio" value="https://tazarkount.com/read/女"/>女</td></tr><tr><th>生日</th><td><input name="users.ubirth" type="text"/></td></tr><tr><td colspan="2"><input type="submit" value="https://tazarkount.com/read/提交"/>&emsp;<input type="button" value="https://tazarkount.com/read/返回" onclick="javaScript:history.back()"/></td></tr></table></form>update.jsp<form action="users/usersAction_update" method="post"><tablealign="center" cellpadding="1" cellspacing="1" border="1" width="300px;"><caption><h3>添加用户</h3></caption><tr><input type="hidden" name="users.uid" value="https://tazarkount.com/read/${user.uid}"/><th>姓名</th><td><input name="users.uname" type="text" value="https://tazarkount.com/read/${user.uname}"/></td></tr><tr><th>性别</th><td><input name="users.usex" type="radio" value="https://tazarkount.com/read/男" checked="checked" />男&emsp;<input name="users.usex" type="radio" value="https://tazarkount.com/read/女" ${user.usex=='女'?'checked':''} />女</td></tr><tr><th>生日</th><td><input name="users.ubirth" type="text"value="https://tazarkount.com/read/${user.ubirth}"/></td></tr><tr><td colspan="2"><input type="submit" value="https://tazarkount.com/read/提交"/>&emsp;<input type="button" value="https://tazarkount.com/read/返回" onclick="javaScript:history.back()"/></td></tr></table></form>执行效果:
myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

文章插图
最终目录结构:
myeclipse怎么导入本地项目 【MyEclipse】:SSH快速搭建

文章插图