完整的SSH案例

发布时间:2020-08-08 13:53:32 作者:fengwuying121
来源:ITPUB博客 阅读:155


  1. 目录结构

    完整的SSH案例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">

  2. action


  1. DeleteUserAction


 


package action;


 


import service.UserService;


import bean.User;


 


import com.opensymphony.xwork2.ActionSupport;


 


 


public class DeleteUserAction extends ActionSupport {


         /**


     *


     */


         private static final long serialVersionUID = 1L;


         private User user = new User();


         private UserService userService;


 


         public User getUser() {


                   return user;


         }


 


         public void setUser(User user) {


                   this.user = user;


         }


 


         public UserService getUserService() {


                   return userService;


         }


 


         public void setUserService(UserService userService) {


                   this.userService = userService;


         }


 


         @Override


         public String execute() throws Exception {


                   System.out.println("-------UserAction.deleteUser-----------"


                                     + user.getFirstName());


                   this.userService.delete(user);


                   return "SUCCESS";


         }


}


 


  1.  ListUserAction


package action;


import java.util.Map;


import com.opensymphony.xwork2.ActionContext;


import com.opensymphony.xwork2.ActionSupport;


import service.UserService;


public class ListUserAction extends ActionSupport {


    private static final long serialVersionUID = 1L;


    private UserService userService;


    public UserService getUserService() {


        return userService;


    }


    public void setUserService(UserService userService) {


        this.userService = userService;


    }


    @SuppressWarnings("unchecked")


    @Override


    public String execute() throws Exception {


        System.out.println("-------UserAction.ListUser-----------");


        Map request = (Map) ActionContext.getContext().get("request");


        request.put("list", this.userService.findAllUsers());


        System.out.println(3);


        return "SUCCESS";


    }


}


 


 


  1. SaveUserAction


package action;


import service.UserService;


import bean.User;


import com.opensymphony.xwork2.ActionSupport;


public class SaveUserAction extends ActionSupport {


    private static final long serialVersionUID = 1L;


    private User user;


    private UserService userService;


    public UserService getUserService() {


        return userService;


    }


    public void setUserService(UserService userService) {


        this.userService = userService;


    }


    public User getUser() {


        return user;


    }


    public void setUser(User user) {


        this.user = user;


    }


    @Override


    public String execute() throws Exception {


//      调用service相关的方法,完成实际的业务处理


        System.out.println("-------UserAction.SaveUser-----------"+user.getFirstName());


        this.userService.doCreateUser(user);


        return "SUCCESS";


    }


}


 


  1. UpdatePUser


package action;


 


import java.util.Map;


import service.UserService;


import bean.User;


import com.opensymphony.xwork2.ActionContext;


import com.opensymphony.xwork2.ActionSupport;


public class UpdatePUser extends ActionSupport {


    private static final long serialVersionUID = 1L;


    private User user=new User();


    private UserService userService;


    public User getUser() {


        return user;


    }


    public void setUser(User user) {


        this.user = user;


    }


    public UserService getUserService() {


        return userService;


    }


    public void setUserService(UserService userService) {


        this.userService = userService;


    }


    @Override


    public String execute() throws Exception {


        System.out.println("-------UserAction.UpdatePUser-----------"+user.getId());


        Map request = (Map) ActionContext.getContext().get("request");


        request.put("list", this.userService.findUserById(user.getId()));


        return "SUCCESS";


    }


}


 


  1. UpdateUserAction


package action;


 


import service.UserService;


import bean.User;


import com.opensymphony.xwork2.ActionSupport;


public class UpdateUserAction extends ActionSupport {


         private User user = new User();


         private UserService userService;


         public User getUser() {


                   return user;


         }


         public void setUser(User user) {


                   this.user = user;


         }


         public UserService getUserService() {


                   return userService;


         }


         public void setUserService(UserService userService) {


                   this.userService = userService;


         }


         @Override


         public String execute() throws Exception {


                   System.out.println("-------UserAction.UpdateUser-----------"


                                     + user.getFirstName());


                   this.userService.update(this.user);


                   return "SUCCESS";


         }


}


 


  1. Bean


package bean;


 


public class User { 


    private int id; 


    private String firstName; 


    private String lastName; 


    private int age; 


    public int getId() { 


        return id; 


    } 


    public void setId(int id) { 


        this.id = id; 


    } 


    public String getFirstName() { 


        return firstName; 


    } 


    public void setFirstName(String firstName) { 


        this.firstName = firstName; 


    } 


    public String getLastName() { 


        return lastName; 


    } 


    public void setLastName(String lastName) { 


        this.lastName = lastName; 


    } 


    public int getAge() { 


        return age; 


    } 


    public void setAge(int age) { 


        this.age = age; 


    } 


    @Override 


    public String toString() { 


        return "ID: " + id + "FirstName: " + firstName; 


    } 


}


 


 


  1. User.hbm.xml


<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE hibernate-mapping PUBLIC


    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"


    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">


<hibernate-mapping>


    <class name="bean.User" table="tb_users">


        <id name="id"></id>


        <property name="firstName" />


        <property name="lastName" />


        <property name="age" />


    </class>


</hibernate-mapping> 


 


  1. Dao

    package dao;

     

    import java.util.List;

    import bean.User;

    public interface UserDAO {

    public void doCreateUser(User user);

    public List<User> findAllUsers();

    public void removeUser(User user);

    public void updateUser(User user);

    public List<User> findUserById(int id);

     

    }

     

    package dao;

     

    import java.util.List;

    import org.hibernate.Query;

    import org.hibernate.Session;

    import org.hibernate.SessionFactory;

    import bean.User;

    public class UserDAOImpl implements UserDAO {

     

    private SessionFactory sessionFactory;

    public void setSessionFactory(SessionFactory sessionFactory) {

               this.sessionFactory = sessionFactory;

    }

     

    public Session getSession() {

               return sessionFactory.getCurrentSession();

    }

     

    @Override

    public void doCreateUser(User user) {

               // TODO Auto-generated method stub

               System.out.println("-------UserDaoImp.doCreateUser-----------"

                                 + user.getFirstName());

               System.out.println("id" + user.getId());

               System.out.println("firstname" + user.getFirstName());

               System.out.println("lastname" + user.getLastName());

               System.out.println("age" + user.getAge());

               getSession().save(user);

    }

     

    @Override

    public List<User> findAllUsers() {

               // TODO Auto-generated method stub

               String hql = "from User u order by u.id asc";

               System.out.println(1);

               Query query = getSession().createQuery(hql);

               System.out.println(2);

               List<User> list = query.list();

               return list;

    }

     

    @Override

    public void removeUser(User user) {

               // TODO Auto-generated method stub

               System.out.println("-------UserDaoImp.removeUser-----------"

                                 + user.getFirstName());

               getSession().delete(user);

    }

     

    @Override

    public void updateUser(User user) {

               // TODO Auto-generated method stub

               System.out.println("-------UserDaoImp.updateUser-----------"

                                 + user.getFirstName());

               getSession().update(user);

    }

     

    @Override

    public List<User> findUserById(int id) {

               // TODO Auto-generated method stub

               System.out.println("-------UserDaoImp.findUserById-----------" + id);

               String hql = "from User u where u.id=:id order by u.id asc";

               Query query = getSession().createQuery(hql);

               query.setInteger("id", id);

               List<User> list = query.list();

               return list;

    }

     

    }

     

     

  2. Service

    package service;

     

    import java.util.List;

    import bean.User;

    public interface UserService {

    public void doCreateUser(User user);

        public List<User> findAllUsers();

        public void delete(User user);

        public void update(User user);

        public List<User> findUserById(int id);

     

    }

     

    package service;

     

    import java.util.List;

    import dao.UserDAO;

    import bean.User;

    public class UserServiceImpl implements UserService {

    private UserDAO dao;

        public UserDAO getDao() {

            return dao;

        }

        public void setDao(UserDAO dao) {

            this.dao = dao;

        }

        public void doCreateUser(User user) {

        System.out.println("-------UserService.doCreateUser-----------"+user.getFirstName());

            this.dao.doCreateUser(user);

        }

        public List<User> findAllUsers() {

            System.out.println("-------UserService.findAllUsers-----------");

            return this.dao.findAllUsers();

        }

        public void delete(User user) {

          System.out.println("-------UserService.deleteUser-----------"+user.getFirstName());

            this.dao.removeUser(user);

        }

        public void update(User user) {

         System.out.println("-------UserService.updateUser-----------"+user.getFirstName());

            this.dao.updateUser(user);

        }

        public List<User> findUserById(int id) {

            System.out.println("-------UserService.findUserById-----------"+id);

            return this.dao.findUserById(id);

        }

     

     

    }

     

  3. 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:context="http://www.springframework.org/schema/context"


    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"


    xsi:schemaLocation="http://www.springframework.org/schema/beans


    http://www.springframework.org/schema/beans/spring-beans.xsd


    http://www.springframework.org/schema/context


    http://www.springframework.org/schema/context/spring-context.xsd


    http://www.springframework.org/schema/aop


    http://www.springframework.org/schema/aop/spring-aop.xsd


    http://www.springframework.org/schema/tx


    http://www.springframework.org/schema/tx/spring-tx.xsd">


 


 


    <!-- 引入外部属性文件. -->


    <context:property-placeholder location="classpath:jdbc.properties" />


    <!-- 配置c3p0连接池 -->


    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">


        <property name="driverClass" value="${jdbc.driver}" />


        <property name="jdbcUrl" value="${jdbc.url}" />


        <property name="user" value="${jdbc.user}" />


        <property name="password" value="${jdbc.password}" />


    </bean>


 


    <!-- 零障碍整合spring配置文件中引入hibernate的配置文件 -->


    <bean id="sessionFactory"


        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">


        <!-- 管理连接池 -->


        <property name="dataSource" ref="dataSource"></property>


        <!-- hibernate属性 -->


        <property name="hibernateProperties">


            <props>


                <prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop>


                <prop key="hibernate.show_sql">true</prop>


                <prop key="hibernate.format_sql">true</prop>


                <prop key="hibernate.hbm2ddl.auto">update</prop>


                <prop key="hibernate.connection.autocommit">false</prop>


            </props>


        </property>


       


        <property name="mappingResources">


            <list>


                <value>bean/User.hbm.xml</value>


            </list>


        </property>


        <!-- <property name="mappingDirectoryLocations">


            <list>


                <value>classpath:vo</value>


            </list>


        </property> -->


    </bean>


 


 


    <bean id="userDAO" class="dao.UserDAOImpl" scope="singleton">


        <property name="sessionFactory" ref="sessionFactory">


        </property>


    </bean>


 


    <bean id="userServiceTarget" class="service.UserServiceImpl"


        scope="singleton">


        <property name="dao" ref="userDAO" />


    </bean>


 


    <bean id="userService"


        class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">


        <property name="target" ref="userServiceTarget">


        </property>


        <property name="transactionManager" ref="transactionManager">


        </property>


        <property name="transactionAttributes">


            <props>


                <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>


                <prop key="*">PROPAGATION_REQUIRED</prop>


            </props>


        </property>


    </bean>


 


    <bean id="saveUserAction" class="action.SaveUserAction" scope="prototype">


        <property name="userService" ref="userService"></property>


    </bean>


    <bean id="listUserAction" class="action.ListUserAction" scope="prototype">


        <property name="userService" ref="userService"></property>


    </bean>


    <bean id="removeUserAction" class="action.DeleteUserAction" scope="prototype">


        <property name="userService" ref="userService"></property>


    </bean>


    <bean id="updatePUserAction" class="action.UpdatePUser">


        <property name="userService" ref="userService"></property>


    </bean>


    <bean id="updateUserAction" class="action.UpdateUserAction" scope="prototype">


        <property name="userService" ref="userService"></property>


    </bean>


    <bean id="UpdatePUser" class="action.UpdatePUser" scope="prototype">


        <property name="userService" ref="userService"></property>


    </bean>


    <!-- 事务管理器 -->


    <bean id="transactionManager"


        class="org.springframework.orm.hibernate3.HibernateTransactionManager">


        <property name="sessionFactory" ref="sessionFactory" />


    </bean>


    <!-- 注解开户事务 -->


    <tx:annotation-driven transaction-manager="transactionManager" />


</beans>


 


 


  1. jdbc.properties

    jdbc.user=scott

    jdbc.password=tiger

    jdbc.driver=oracle.jdbc.driver.OracleDriver

    jdbc.url=jdbc\:oracle\:thin\:@localhost\:1521\:orcl

     

  2. struts.xml


 


<?xml version="1.0" encoding="UTF-8" ?>


<!DOCTYPE struts PUBLIC


    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"


    "http://struts.apache.org/dtds/struts-2.3.dtd">


 


<struts>


    <constant name="struts.devMode" value="false" />


    <package name="default" namespace="/" extends="struts-default">


        <action name="saveUser" class="saveUserAction">


            <result name="SUCCESS" type="redirectAction">listUser</result>


        </action>


        <action name="listUser" class="listUserAction">


            <result name="SUCCESS">/list.jsp</result>


        </action>


        <action name="deleteUser" class="removeUserAction">


            <result name="SUCCESS" type="redirectAction">listUser</result>


        </action>


        <action name="updatePUser" class="updatePUserAction">


            <result name="SUCCESS">/update.jsp</result>


        </action>


        <action name="updateUser" class="updateUserAction">


            <result name="SUCCESS" type="redirectAction">listUser</result>


        </action>


        <action name="findUser" class="UpdatePUser">


            <result name="SUCCESS">/list.jsp</result>


        </action>


    </package>


</struts>


 


  1. index.jsp


 


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>


<%@ taglib prefix="s" 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>


    <h2><font color="red">Operation List</font></h2>


    <s:a href="update.jsp">Update User</s:a><br/>


    <s:a href="Save.jsp">Save User</s:a><br/>


    <s:a href="listUser.action">List Users</s:a>


    <s:form action="findUser">


        <s:textfield name="user.id" label="id"></s:textfield>


        <s:submit></s:submit>


    </s:form>


  </body>


</html>


 


  1. list.jsp


 


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>


<%@ taglib prefix="s" uri="/struts-tags"%>


 


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


<html>


  <head> 


    <title>My JSP 'list.jsp' starting page</title>


    <script type="text/javascript">


        function del(){


            if(confirm("Are you sure?")){


                return true;


            }


            return false;


        }


    </script>


  </head>


 


  <body>


    <h2><font color="red">Users List</font></h2>


    <s:a href="/ssh_learn/index.jsp">返回</s:a>


    <table border="1" width="80%" align="center">


        <tr>


            <th>序号</th>


            <th></th>


            <th></th>


            <th>年龄</th>


            <th>删除</th>


            <th>更新</th>


        </tr>


 


        <s:iterator value="#request.list" id="us">


            <tr>


                <td>


                    <s:property value="#us.id"/>


                </td>


                <td>


                    <s:property value="#us.firstName"/>


                </td>


                <td>


                    <s:property value="#us.lastName"/>


                </td>


                <td>


                    <s:property value="#us.age"/>


                </td>


                <td align="center">


                    <s:a href="deleteUser.action?user.id=%{#us.id}" onclick="return del()">Delete</s:a>


                </td>


                <td align="center">


                    <s:a href="updatePUser.action?user.id=%{#us.id}">Update</s:a>      


                </td>


            </tr>


        </s:iterator>


    </table>


 


  </body>


</html>


 


  1. Save.jsp


 


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>


<%@ taglib prefix="s" uri="/struts-tags"%>


 


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


<html>


<head>


 


<title>My JSP 'update.jsp' starting page</title>


 


</head>


 


<body>


    <h2>


        <font color="red">Save User</font>


    </h2>


 


    <s:form action="saveUser">


        <table>


            <tr>


                <td><s:hidden name="user.id" value="%{user.id}"></s:hidden></td>


            </tr>


 


            <tr>


                <td><s:textfield name="user.firstName"


                        value="%{user.firstName}" label="First Name"></s:textfield></td>


            </tr>


 


            <tr>


                <td><s:textfield name="user.lastName" value="%{user.lastName}"


                        label="Last Name"></s:textfield></td>


            </tr>


 


            <tr>


                <td><s:textfield name="user.age" value="%{user.age}"


                        label="Age"></s:textfield></td>


            </tr>


 


            <tr>


                <td><s:submit></s:submit></td>


            </tr>


        </table>


    </s:form>


 


</body>


</html>


 


  1. update.jsp


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>


<%@ taglib prefix="s" uri="/struts-tags"%>


 


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


<html>


<head>


 


<title>My JSP 'update.jsp' starting page</title>


</head>


<body>


    <h2>


        <font color="red">Update User</font>


    </h2>


    <s:form action="updateUser">


        <table>


            <tr>


                <td><s:hidden name="user.id" value="%{user.id}"></s:hidden></td>


            </tr>


 


            <tr>


                <td><s:textfield name="user.firstName"


                        value="%{user.firstName}" label="First Name"></s:textfield></td>


            </tr>


 


            <tr>


                <td><s:textfield name="user.lastName" value="%{user.lastName}"


                        label="Last Name"></s:textfield></td>


            </tr>


 


            <tr>


                <td><s:textfield name="user.age" value="%{user.age}"


                        label="Age"></s:textfield></td>


            </tr>


 


            <tr>


                <td><s:submit></s:submit></td>


            </tr>


        </table>


    </s:form>


 


</body>


</html>


 


  1. WEB-INF.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/classes/applicationContext.xml </param-value>


    </context-param>


    <welcome-file-list>


        <welcome-file>index.jsp</welcome-file>


    </welcome-file-list>


    <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>


    <listener>


        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>


    </listener>


</web-app>


推荐阅读:
  1. 电脑通过 ssh 连接 SAIL-IMX7D开发板的完整教程
  2. 现代中小企业IT基础平台建设 - 完整案例实战(01_案例设计)

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

ssh 完整 案例

上一篇:Linux Crontab 定时任务 命令详解

下一篇:计算所山世光:AI方法论需升级,疫后 AI 将如何发展?

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》