• SSH框架整合实现信息管理系统


    视频讲解

    优酷在线观看(普清、高清):http://www.youku.com/playlist_show/id_19348363.html

    B站在线观看:https://www.bilibili.com/video/BV1Ft4y117Jm

    超清视频下载:http://yun.baidu.com/s/1pJ57Ry7

    项目结构

     

    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">
    
        <!--首页-->
        <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>
    
        <!--Struts过滤转发器-->
        <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>
    
        <!--Spring环境加载监听器-->
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
    
    </web-app>

     

    JSP页面

    • 登入页面(index.jsp

    <%@ page pageEncoding="GBK"%>
    <h1>管理员登录</h1>(测试账号密码都是admin)
    <form action="UserAction_login" method="post">
        账号<input type="text" name="user.name"><br>
        密码<input type="password" name="user.pswd"><br>
        <input type="submit" value="登录">
    </form> 

     

    • 列表页面(list.jsp

    <%@taglib prefix="s" uri="/struts-tags" %>
    <table border="1">
        <tr>
            <th>ID</th><th>name</th><th>pswd</th><th>update</th><th>delete</th>
        </tr>
        <s:iterator value="#request.list"> 
            <tr>
                <td><s:property value="id"/></td>  
                <td><s:a href="UserAction_detail?user.id=%{id}"><s:property value="name"/></s:a></td>  
                <td><s:property value="pswd"/></td>
                <td><s:a href="UserAction_toUpdate?user.id=%{id}">update</s:a></td>
                <td><s:a href="UserAction_delete?user.id=%{id}">delete</s:a></td>
            </tr>
        </s:iterator>
    </table>
    <a href="add.jsp">add</a>

     

    • 添加页面(add.jsp

    <form action="UserAction_add" method="post">
        name<input name="user.name" type="text"><br>
        pswd<input name="user.pswd" type="password"><br>
        <input type="submit" value="add">
    </form>

     

    • 详情页面(detail.jsp

    <%@taglib prefix="s" uri="/struts-tags" %>
    id: <s:property value="user.id"/><br/>
    name: <s:property value="user.name"/><br/>
    pswd: <s:property value="user.pswd"/>

     

    • 更新页面(update.jsp

    <%@taglib prefix="s" uri="/struts-tags" %>
    <form action="UserAction_update" method="post">
        <s:hidden name="user.id"></s:hidden>
        name: <input name="user.name" type="text" value="<s:property value="user.name"/>"><br>
        pswd: <input name="user.pswd" type="password"><br>
        <input type="submit" value="modify">
    </form>

     

    控制层(Action

    • Struts.xml配置Action

    <?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>
        <constant name="struts.devMode" value="true" />
        <constant name="struts.i18n.encoding" value="GBK"></constant>
        <package name="user" extends="struts-default">
            <action name="UserAction_*" class="userAction" method="{1}">
            <!-- *匹配任意字符,{1}指第一个星号匹配到的字符 -->
                <!--重定向到UserAction执行list方法-->
                <result name="success" type="redirectAction">UserAction_list</result>
                <!--返回结果相应页面-->
                <result name="login">/index.jsp</result>
                <result name="list">/list.jsp</result>
                <result name="detail">/detail.jsp</result>
                <result name="update">/update.jsp</result>
            </action>
        </package>
    </struts>

     

    • UserAction.java

     1 package com.lyltim.action;
     2 
     3 import javax.annotation.Resource;
     4 
     5 import org.apache.struts2.ServletActionContext;
     6 import org.springframework.stereotype.Controller;
     7 
     8 import com.lyltim.bean.User;
     9 import com.lyltim.service.IUserService;
    10 import com.opensymphony.xwork2.ActionSupport;
    11 
    12 @Controller("userAction")
    13 public class UserAction extends ActionSupport {
    14 
    15     private User user;
    16 
    17     //注入userService
    18     @Resource
    19     IUserService userService;
    20 
    21     public void setUserService(IUserService userService) {
    22         this.userService = userService;
    23     }
    24     public User getUser() {
    25         return user;
    26     }
    27     public void setUser(User user) {
    28         this.user = user;
    29     }
    30 
    31     public String login() {
    32         if (userService.checkLogin(user))
    33             return SUCCESS;
    34         else
    35             return LOGIN;
    36     }
    37 
    38     public String list() {
    39         ServletActionContext.getRequest().setAttribute("list", userService.list());
    40         return "list";
    41     }
    42 
    43     public String add() {
    44         userService.add(user);
    45         return SUCCESS;
    46     }
    47 
    48     public String detail() {
    49         user = userService.getUser(user.getId());
    50         return "detail";
    51     }
    52 
    53     //先获得要更新的用户的信息,显示到更新页面。
    54     public String toUpdate() {
    55         user = userService.getUser(user.getId());
    56         return "update";
    57     }
    58 
    59     //更新用户信息
    60     public String update() {
    61         userService.update(user);
    62         return SUCCESS;
    63     }
    64 
    65     public String delete() {
    66         userService.delete(user.getId());
    67         return SUCCESS;
    68     }
    69 
    70 }

     

    实体层(Bean

    • User.java

    1 package com.lyltim.bean;
    2 public class User {
    3     private int id;
    4     private String name, pswd;
    5     //Getters and Setters...
    6 }

     

    • User.hbm.xml 实体映射配置文件

    <?xml version="1.0"?>
    <!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="com.lyltim.bean.User" table="user">
            <id column="id" name="id" type="int">
                <generator class="native" />
            </id>
            <property column="name" name="name" not-null="true" type="string" />
            <property column="pswd" name="pswd" not-null="true" type="string" />
        </class>
    </hibernate-mapping>

     

    业务逻辑层(Service

    • IUserService接口

     1 package com.lyltim.service;
     2 
     3 import java.util.List;
     4 import com.lyltim.bean.User;
     5 
     6 public interface IUserService {
     7     boolean checkLogin(User user); //登入验证
     8     void add(User user); //添加用户
     9     List<User> list(); //列出所有用户
    10     User getUser(int id); //根据ID查找用户
    11     void update(User user); //修改用户
    12     void delete(int id); //删除用户
    13 }
    • UserServiceImpl.java实现类

     1 package com.lyltim.service;
     2 
     3 import java.util.List;
     4 import javax.annotation.Resource;
     5 import org.springframework.stereotype.Service;
     6 
     7 import com.lyltim.bean.User;
     8 import com.lyltim.dao.IUserDAO;
     9 
    10 @Service("userService")
    11 public class UserServiceImpl implements IUserService {
    12 
    13     //注入userDAO
    14     @Resource
    15     private IUserDAO userDAO;
    16 
    17     public void setUserDAO(IUserDAO userDAO) {
    18         this.userDAO = userDAO;
    19     }
    20 
    21     //登入验证
    22     public boolean checkLogin(User user) {
    23         if ("admin".equals(user.getName()) && "admin".equals(user.getPswd())) 
    24             return true;
    25         else
    26             return false;
    27     }
    28 
    29     //添加用户
    30     public void add(User user) {
    31         userDAO.add(user);
    32     }
    33 
    34     //列出所有用户
    35     public List<User> list() {
    36         return userDAO.list();
    37     }
    38 
    39     //查询某个用户
    40     public User getUser(int id) {
    41         return userDAO.getUser(id);
    42     }
    43 
    44     //修改某个用户的资料
    45     public void update(User user) {
    46         userDAO.update(user);
    47     }
    48 
    49     //删除某个用户
    50     public void delete(int id) {
    51         userDAO.delete(id);
    52     }
    53 
    54 }

     

    数据持久层(DAO

    • IUserDAO接口

     1 package com.lyltim.dao;
     2 
     3 import java.util.List;
     4 import com.lyltim.bean.User;
     5 
     6 public interface IUserDAO {
     7     void add(User user);  //添加用户
     8     List<User> list(); //列出所有用户
     9     User getUser(int id); //根据ID查找用户
    10     void update(User user); //修改用户
    11     void delete(int id); //删除用户
    12 }
    • UserDAOImpl.java实现类

     1 package com.lyltim.dao;
     2 
     3 import java.util.List;
     4 
     5 import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
     6 import org.springframework.stereotype.Repository;
     7 
     8 import com.lyltim.bean.User;
     9 
    10 @Repository("userDAO")
    11 public class UserDAOImpl extends HibernateDaoSupport implements IUserDAO {
    12 
    13     public void add(User user) {
    14         getHibernateTemplate().save(user);
    15     }
    16 
    17     public List<User> list() {
    18         return getHibernateTemplate().find("from User");
    19     }
    20 
    21     public User getUser(int id) {
    22         return getHibernateTemplate().get(User.class, id);
    23     }
    24 
    25     public void update(User user) {
    26         getHibernateTemplate().update(user);
    27     }
    28 
    29     public void delete(int id) {
    30         getHibernateTemplate().delete(getHibernateTemplate().get(User.class, id));
    31     }
    32 }

     

    Spring全局配置文件(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"
           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-3.0.xsd">
    
        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
            <property name="driverClassName" value="com.mysql.jdbc.Driver" />
            <property name="url" value="jdbc:mysql:///test" />
            <property name="username" value="root" />
            <property name="password" value="123" />
        </bean>
    
        <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
            <property name="dataSource" ref="dataSource" />
            <property name="mappingResources">
                <list>
                    <value>com/lyltim/bean/User.hbm.xml</value>
                </list>
            </property>
            <property name="hibernateProperties">
                <props>
                    <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
                    <prop key="hibernate.hbm2ddl.auto">create-drop</prop>
                    <prop key="hibernate.show_sql">true</prop>
                </props>
            </property>
        </bean>
    
        <bean id="userDAO" class="com.lyltim.dao.UserDAOImpl">
            <property name="sessionFactory" ref="sessionFactory" />
        </bean>
    
        <!--启用注解注入 -->
        <context:annotation-config />
        <!--启用组件扫描 -->
        <context:component-scan base-package="com.lyltim" />
    
    </beans>
  • 相关阅读:
    包含源文件 —— 是奇技淫巧还是饮鸩止渴?
    感谢各位网友——《品悟C——抛弃 C程序设计 中的谬误与恶习》正式出版
    能否用痰盂盛饭——谈谈在头文件中定义外部变量
    C:劣书简易鉴别法
    从“站在巨人的肩上”到“跪到侏儒之脚下”——图灵公司副主编自供(二)
    劣质代码评析——刻舟求剑的故事
    Python自然语言处理学习笔记(36): 4.8 Python库的样本
    Python自然语言处理学习笔记(38): 4.10 深入阅读
    Python自然语言处理学习笔记(37):4.9 小结
    Python自然语言处理学习笔记(35): 4.7 算法设计
  • 原文地址:https://www.cnblogs.com/LYLtim/p/3132098.html
Copyright © 2020-2023  润新知