【 SSH 实例】使用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:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-3.0.xsd
           http://www.springframework.org/schema/tx
           http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
            http://www.springframework.org/schema/cache
            http://www.springframework.org/schema/cache/spring-cache.xsd
           http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!-- 加载db.properties文件 -->
    <bean id="config" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
        <property name="locations" value="classpath*:*.properties"/>
    </bean>

    <!-- 配置配置数据库信息(替代mybatis的配置文件conf.xml) -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="${driver}"></property>
        <property name="url" value="${url}"></property>
        <property name="username" value="${username}"></property>
        <property name="password" value="${password}"></property>
        <property name="initialSize" value="${initialSize}"></property>
        <property name="maxActive" value="${maxActive}"></property>
        <property name="maxIdle" value="${maxIdle}"></property>
        <property name="minIdle" value="${minIdle}"></property>
    </bean>

    <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <!-- //加载实体类的映射文件位置及名称 -->
        <property name="mappingLocations" value="classpath:k/bean/*.hbm.xml"></property>
        <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
    </bean>

    <!--事务-->
    <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>
    <tx:annotation-driven transaction-manager="transactionManager"/>

    <!--开启注解配置-->
    <context:annotation-config/>

    <!--配置 action-->
    <bean name="/login" class="k.action.LoginAction" scope="prototype"/>
    <bean name="/employee" class="k.action.EmployeeAction" scope="prototype"/>

    <!--配置 Service-->
    <bean name="testService" class="k.service.TestService"/>
    <bean id="employeeService" name="employeeService" class="k.service.impl.EmployeeServiceImpl"/>
    <bean name="departmentService" class="k.service.impl.DepartmentServiceImpl"/>

</beans>
View Code

db.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
username=root
password=root3306
initialSize=20
maxActive=500
maxIdle=2
minIdle=1
View Code

hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!-- 配置Hibernate的基本属性 -->
        <!-- 1.数据源配置到IOC容器中 -->
        <!-- 2.关联的.hbm.xml也在IOC容器配置SessionFactory实例 -->
        <!-- 3.配置Hibernate的基本属性:方言,SQL显示及格式化,生成数据表的策略以及二级缓存 -->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
        <property name="hibernate.hbm2ddl.auto">update</property>
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.format_sql">true</property>
        <!--<property name="cache.use_second_level_cache">true</property>-->
        <property name="ache.provider_class">org.hibernate.cache.internal.DefaultCacheKeysFactory</property>
        <property name="generate_statistics">true</property>
    </session-factory>
</hibernate-configuration>
View Code

log4j.properties

log4j.rootLogger=ERROR, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.conversionPattern=%5p [%t] (%F:%L) - %m%n
View Code

struts-config.xml

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

<!DOCTYPE struts-config PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
        "http://struts.apache.org/dtds/struts-config_1_3.dtd">

<struts-config>

    <form-beans>
        <form-bean name="employeeForm" type="k.form.EmployeeForm">
            <form-property name="id" type="java.lang.Integer"></form-property>
            <form-property name="name" type="java.lang.String"></form-property>
            <form-property name="password" type="java.lang.String"></form-property>
        </form-bean>
    </form-beans>

    <global-forwards>
        <forward name="ok" path="/WEB-INF/jsp/ok.jsp"></forward>
        <forward name="err" path="/WEB-INF/jsp/err.jsp"></forward>
    </global-forwards>

    <action-mappings>
        <action name="employeeForm" path="/login" parameter="action" type="k.action.LoginAction"
                scope="request" attribute="employeeForm" input="index.jsp" validate="false">
            <forward name="main" path="/WEB-INF/jsp/main.jsp"></forward>
            <forward name="loginJsp" path="/WEB-INF/jsp/login.jsp"></forward>
        </action>
        <action name="employeeForm" path="/employee" parameter="action" type="k.action.EmployeeAction"
                scope="request" attribute="employeeForm" input="index.jsp" validate="false">
            <forward name="add" path="/WEB-INF/jsp/employee/add.jsp"></forward>
            <forward name="loginJsp" path="/WEB-INF/jsp/login.jsp"></forward>
            <forward name="list" path="/WEB-INF/jsp/employee/list.jsp"></forward>
            <forward name="update" path="/WEB-INF/jsp/employee/update.jsp"></forward>
        </action>
    </action-mappings>

    <controller>
        <set-property property="processorClass"
                      value="org.springframework.web.struts.DelegatingRequestProcessor"></set-property>
    </controller>

</struts-config>
View Code

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <!-- spring 初始化 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        <listener-class>k.listener.StartSystemListener</listener-class>
        <!--<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>-->
    </listener>

    <!-- struts 初始化 -->
    <servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
        <init-param>
            <param-name>config</param-name>
            <param-value>/WEB-INF/struts-config.xml</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

    <!-- 配置请求过滤器,编码格式设为UTF-8,避免中文乱码-->
    <filter>
        <filter-name>springUtf8Encoding</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>springUtf8Encoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!--<filter>-->
    <!--<filter-name>EncodingFilter</filter-name>-->
    <!--<filter-class>k.listener.EncodingFilter</filter-class>-->
    <!--</filter>-->
    <!--<filter-mapping>-->
    <!--<filter-name>EncodingFilter</filter-name>-->
    <!--<url-pattern>/*</url-pattern>-->
    <!--</filter-mapping>-->

    <!-- 懒加载 -->
    <filter>
        <filter-name>OpenSessionInViewFilter</filter-name>
        <filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>OpenSessionInViewFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>


    <!-- 以下3项参数与log4j的配置相关 -->
    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>classpath:log4j.properties</param-value>
    </context-param>

    <context-param>
        <param-name>log4jRefreshInterval</param-name>
        <param-value>60000</param-value>
    </context-param>
    <listener>
        <listener-class>
            org.springframework.web.util.Log4jConfigListener
        </listener-class>
    </listener>


</web-app>
View Code
LoginAction
package k.action;

import k.domain.Employee;
import k.form.EmployeeForm;
import k.service.EmployeeService;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginAction extends DispatchAction {

    @Resource
    private EmployeeService employeeService;

    public ActionForward login(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
        return mapping.findForward("loginJsp");
    }

    public ActionForward doLogin(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
        EmployeeForm employeeOld = (EmployeeForm) form;
        Employee employee = new Employee(Integer.parseInt(employeeOld.getId()), employeeOld.getPassword());
        employee = employeeService.checkEmployee(employee);
        if (employee != null) {
            request.getSession().setAttribute("employee", employee);
            return mapping.findForward("main");
        }
        return mapping.findForward("err");
    }

    public ActionForward loginOut(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
        return super.execute(mapping, form, request, response);
    }

    public ActionForward main(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
        return mapping.findForward("loginJsp");
    }
}
View Code
EmployeeAction
package k.action;

import k.domain.Department;
import k.domain.Employee;
import k.form.EmployeeForm;
import k.service.DepartmentService;
import k.service.EmployeeService;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Date;

public class EmployeeAction extends DispatchAction {

    @Resource
    private EmployeeService employeeService;
    @Resource
    private DepartmentService departmentService;

    public ActionForward addEmployeeUI(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
        return mapping.findForward("add");
    }

    public ActionForward addEmployee(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
        EmployeeForm employeeForm = (EmployeeForm) form;
        Employee employee = new Employee();
        employee.setName(employeeForm.getName());
        employee.setEmail(employeeForm.getEmail());
        employee.setSalary(employeeForm.getSalary());
        employee.setPassword(employeeForm.getPassword());
        employee.setGrade(employeeForm.getGrade());
        employee.setHireDate(new Date());
        Department department = (Department) departmentService.findById(Department.class, Integer.parseInt(employeeForm.getDepartment_id()));
        employee.setDepartment(department);
        try {
            employeeService.add(employee);
        } catch (Exception e) {
            e.printStackTrace();
            return mapping.findForward("err");
        }
        return mapping.findForward("ok");
    }

    public ActionForward getList(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
        // request.setAttribute("employeeList", employeeService.getEmployeeList());
        // return mapping.findForward("list");
        String s_pageNow = request.getParameter("pageNow");
        int pageNow = 1;
        int pageSize = 3;
        if (s_pageNow != null) {
            pageNow = Integer.parseInt(s_pageNow);
        }
        int pageCount = employeeService.getPageCount(pageSize);
        request.setAttribute("pageCount", pageCount);
        request.setAttribute("employeeList", employeeService.getEmployeeList(pageSize, pageNow));
        return mapping.findForward("list");
    }

    public ActionForward delEmp(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
        try {
            employeeService.delById(Employee.class, Integer.parseInt(request.getParameter("id")));
        } catch (Exception e) {
            e.printStackTrace();
            return mapping.findForward("err");
        }
        return mapping.findForward("ok");
    }

    public ActionForward updateUI(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
        String id = request.getParameter("id");
        Employee employee = (Employee) employeeService.findById(Employee.class, Integer.parseInt(id));
        request.setAttribute("emp", employee);
        return mapping.findForward("update");
    }

    public ActionForward update(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
        EmployeeForm employeeForm = (EmployeeForm) form;
        Employee employee = new Employee();
        employee.setId(Integer.parseInt(employeeForm.getId()));
        employee.setName(employeeForm.getName());
        employee.setEmail(employeeForm.getEmail());
        employee.setSalary(employeeForm.getSalary());
        employee.setPassword(employeeForm.getPassword());
        employee.setGrade(employeeForm.getGrade());
        employee.setHireDate(new Date());
        try {
            employeeService.executeUpdate(employee);
        } catch (Exception e) {
            e.printStackTrace();
            return mapping.findForward("err");
        }
        return mapping.findForward("ok");
    }
}
View Code
BasicAbstractService
package k.basic;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.io.Serializable;
import java.util.List;

@Transactional
public abstract class BasicAbstractService implements BasicService {

    @Resource
    private SessionFactory sessionFactory;

    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }

    @Override
    public void add(Object object) {
        this.sessionFactory.getCurrentSession().save(object);
    }

    @Override
    public Object findById(Class classz, Serializable id) {
        return this.sessionFactory.getCurrentSession().get(classz, id);
    }

    @Override
    public List executeQuery(String hql, Object[] parameters) {
        Query query = this.sessionFactory.getCurrentSession().createQuery(hql);
        if (parameters != null && parameters.length > 0) {
            for (int i = 0; i < parameters.length; i++) {
                query.setParameter(i, parameters[i]);
            }
        }
        return query.list();
    }

    @Override
    public List executeQueryByPage(String hql, Object[] parameters, Integer pageNow, Integer pageSize) {
        Query query = this.sessionFactory.getCurrentSession().createQuery(hql);
        if (parameters != null && parameters.length > 0) {
            for (int i = 0; i < parameters.length; i++) {
                query.setParameter(i, parameters[i]);
            }
        }
        return query.setFirstResult((pageNow - 1) * pageSize).setMaxResults(pageSize).list();
    }

    @Override
    public List executeUpdate(String hql, Object[] parameters) {
        return null;
    }

    @Override
    public Object uniqueQuery(String hql, Object[] parameters) {
        Query query = this.sessionFactory.getCurrentSession().createQuery(hql);
        return query.uniqueResult();
    }

    @Override
    public int queryPageCount(String hql, Object[] parameters, Integer pageSize) {
        return 0;
    }

    @Override
    public void delById(Class clazz, Serializable id) {
        Session session = this.sessionFactory.getCurrentSession();
        session.delete(findById(clazz, id));
    }

    @Override
    public List executeUpdate(Object object) {
        Session session = this.sessionFactory.getCurrentSession();
        session.update(object);
        return null;
    }
}
View Code
BasicService
package k.basic;

import java.io.Serializable;
import java.util.List;

public interface BasicService {

    Object findById(Class classz, Serializable id);

    List executeQuery(String hql, Object[] parameters);

    List executeQueryByPage(String hql, Object[] parameters, Integer pageNow, Integer pageSize);

    void add(Object object);

    List executeUpdate(String hql, Object[] parameters);

    List executeUpdate(Object object);

    Object uniqueQuery(String hql, Object[] parameters);

    int queryPageCount(String hql, Object[] parameters, Integer pageSize);

    void delById(Class clazz, Serializable id);
}
View Code

Department.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="k.domain.Department" table="t_department">
        <!--<cache usage="read-write"></cache>-->
        <id name="id" column="id" type="java.lang.Integer">
            <generator class="native"></generator>
        </id>
        <property name="name" column="name" type="java.lang.String" length="64"></property>
        <!-- 在客户映射文件中,表示所有联系人
           使用set标签表示所有联系人
           set标签里面有name属性:
                属性值写在客户实体类里面表示联系人的set集合名称

            inverse属性默认值:false不放弃关系维护
                           true 表示放弃关系维护
       -->
        <set name="employees" inverse="true" cascade="save-update,delete">
            <!-- 一对多建表,有外键
                hibernate机制:双向维护外键,在一和多那一方都配置外键
                column属性值:外键名称
             -->
            <key column="department_id"></key>
            <one-to-many class="k.domain.Employee"></one-to-many>
        </set>
    </class>
</hibernate-mapping>
View Code

Employee.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="k.domain.Employee" table="t_employee">
        <id name="id" column="id" type="java.lang.Integer">
            <!-- 设置数据库表id增长策略  native:生成表id值就是主键自动增长  uuid -->
            <generator class="native"></generator>
        </id>
        <!-- 配置其他属性和表字段对应  name属性:实体类属性名称 column属性:生成表字段名称 -->
        <property name="name" column="name" type="java.lang.String" length="64"></property>
        <property name="email" column="email" type="java.lang.String" length="64"></property>
        <property name="hireDate" column="hireDate" type="java.util.Date"></property>
        <property name="salary" column="salary" type="java.lang.Float"></property>
        <property name="password" column="password" type="java.lang.String" length="64"></property>
        <property name="grade" column="grade" type="java.lang.Integer" length="3"></property>
        <many-to-one name="department" class="k.domain.Department" column="department_id"></many-to-one>
    </class>
</hibernate-mapping>
View Code
Department
package k.domain;

import java.util.Set;

public class Department {
    private Integer id;
    private String name;
    private Set<Employee> employees;

    public Department() {
    }

    public Department(String name) {
        this.name = name;
    }

    public Integer getId() {

        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Set<Employee> getEmployees() {
        return employees;
    }

    public void setEmployees(Set<Employee> employees) {
        this.employees = employees;
    }
}
View Code
Employee
package k.domain;

import java.util.Date;

public class Employee {
    private Integer id;
    private String name;
    private String email;
    private Date hireDate;
    private Float salary;
    private String password;
    private Integer grade;
    private Department department;
    private String department_id;

    public Employee(Integer id, String password) {
        this.id = id;
        this.password = password;
    }

    public Employee() {
    }

    public Employee(String name, String password, String email, Date hireDate, Float salary, Integer grade) {
        this.name = name;
        this.email = email;
        this.hireDate = hireDate;
        this.salary = salary;
        this.password = password;
        this.grade = grade;
    }

    public String getDepartment_id() {
        return department_id;
    }

    public void setDepartment_id(String department_id) {
        this.department_id = department_id;
    }

    public Integer getId() {

        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Date getHireDate() {
        return hireDate;
    }

    public void setHireDate(Date hireDate) {
        this.hireDate = hireDate;
    }

    public Float getSalary() {
        return salary;
    }

    public void setSalary(Float salary) {
        this.salary = salary;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Integer getGrade() {
        return grade;
    }

    public void setGrade(Integer grade) {
        this.grade = grade;
    }

    public Department getDepartment() {
        return department;
    }

    public void setDepartment(Department department) {
        this.department = department;
    }

}
View Code
EmployeeForm
package k.form;

import org.apache.struts.action.ActionForm;

import java.util.Date;

public class EmployeeForm extends ActionForm {
    private String id;
    private String name;
    private String email;
    private Date hireDate;
    private Float salary;
    private String password;
    private Integer grade;
    private String department_id;

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Date getHireDate() {
        return hireDate;
    }

    public void setHireDate(Date hireDate) {
        this.hireDate = hireDate;
    }

    public Float getSalary() {
        return salary;
    }

    public void setSalary(Float salary) {
        this.salary = salary;
    }

    public Integer getGrade() {
        return grade;
    }

    public void setGrade(Integer grade) {
        this.grade = grade;
    }

    public String getDepartment_id() {
        return department_id;
    }

    public void setDepartment_id(String department_id) {
        this.department_id = department_id;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}
View Code
EncodingFilter
package k.listener;

import javax.servlet.*;
import javax.servlet.http.HttpServlet;
import java.io.IOException;

public class EncodingFilter extends HttpServlet implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
                         FilterChain filterChain) throws IOException, ServletException {
        servletRequest.setCharacterEncoding("utf-8");
        servletResponse.setCharacterEncoding("utf-8");
        // System.out.println("========== set utf-8 ok ==========");
        filterChain.doFilter(servletRequest, servletResponse);
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }
}
View Code
StartSystemListener
package k.listener;

import k.util.WebHelper;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class StartSystemListener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        //1.将项目上下文路径(request.getContextPath())放置到application域中.
        ServletContext application = sce.getServletContext();
        String app_path = application.getContextPath();
        application.setAttribute("APP_PATH", app_path);
        System.out.println("========== APP_PATH = " + app_path);
        WebHelper.setApp_Path(app_path);
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {

    }
}
View Code
DepartmentService
package k.service;

import k.basic.BasicService;

public interface DepartmentService extends BasicService {

}
View Code
EmployeeService
package k.service;

import k.basic.BasicService;
import k.domain.Employee;

import java.io.Serializable;
import java.util.List;

public interface EmployeeService extends BasicService {
    Employee checkEmployee(Employee e);

    List getEmployeeList(int pageSize, int pageNo);

    List getEmployeeList();

    int getPageCount(int pageSize);

}
View Code
DepartmentServiceImpl
package k.service.impl;

import k.basic.BasicAbstractService;
import k.service.DepartmentService;

public class DepartmentServiceImpl extends BasicAbstractService implements DepartmentService {

}
View Code
EmployeeServiceImpl
package k.service.impl;

import k.basic.BasicAbstractService;
import k.domain.Employee;
import k.service.EmployeeService;

import java.io.Serializable;
import java.util.List;

public class EmployeeServiceImpl extends BasicAbstractService implements EmployeeService {

    @Override
    public Employee checkEmployee(Employee e) {
        String hql = "from Employee c where c.id=? and c.password=?";
        Object[] parameters = new Object[]{e.getId(), e.getPassword()};
        List list = executeQuery(hql, parameters);
        return list != null && list.size() > 0 ? (Employee) list.get(0) : null;
    }

    @Override
    public List getEmployeeList(int pageSize, int pageNo) {
        String hql = "from Employee order by id";
        return this.executeQueryByPage(hql, null, pageNo, pageSize);
    }

    @Override
    public int getPageCount(int pageSize) {
        String sql = "select count(*) from Employee";
        Object obj = this.uniqueQuery(sql, null);
        int rowCount = Integer.parseInt(obj.toString());
        return (rowCount - 1) / pageSize + 1;
    }

    @Override
    public List getEmployeeList() {
        String hql = "from Employee ";
        return executeQuery(hql, null);
    }


}
View Code
WebHelper
package k.util;

import java.util.UUID;

public class WebHelper {

    public static String getApp_Path() {
        return APP_PATH;
    }

    public static void setApp_Path(String appPath) {
        APP_PATH = appPath;
    }

    private static String APP_PATH = "";

    public static String getNewFileName(String fileName) {
        int beginIndex = fileName.lastIndexOf(".");
        return UUID.randomUUID().toString() + fileName.substring(beginIndex, fileName.length());
    }
}
View Code

add.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>添加雇员</title>
</head>
<body>
<h1>添加雇员</h1>
<form action="${APP_PATH}/employee.do?action=addEmployee" method="post">
    <table>
        <tr>
            <td>name:</td>
            <td><input type="text" name="name" value="张三4"></td>
        </tr>
        <tr>
            <td>email:</td>
            <td><input type="text" name="email" value="[email protected]"></td>
        </tr>
        <tr>
            <td>salary:</td>
            <td><input type="text" name="salary" value="5000"></td>
        </tr>
        <tr>
            <td>password:</td>
            <td><input type="password" name="password" value="1"></td>
        </tr>
        <tr>
            <td>grade:</td>
            <td><input type="text" name="grade" value="1"></td>
        </tr>
        <tr>
            <td>department_id:</td>
            <td><select name="department_id">
                <option value="1" selected>部门1</option>
            </select></td>
        </tr>
        <tr>
            <td><input type="submit" name="sub1" value="添加"></td>
            <td><input type="reset" name="reset" value="重置"></td>
        </tr>
    </table>
</form>
</body>
</html>
View Code

list.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
<html>
<head>
    <title>管理员列表</title>
</head>
<body>
<h1>管理员列表</h1>
<form action="${APP_PATH}/login.do?action=doLogin" method="post">
    <table>
        <tr>
            <td>id</td>
            <td>name</td>
            <td>email</td>
            <td>grade</td>
            <td>salary</td>
            <td>修改用户</td>
            <td>删除用户</td>
        </tr>
        <c:forEach var="emp" items="${employeeList}">
            <tr>
                <td>${emp.id}</td>
                <td>${emp.name}</td>
                <td>${emp.email}</td>
                <td>${emp.grade}</td>
                <td>${emp.salary}</td>
                <td><a href="${APP_PATH}/employee.do?action=updateUI&id=${emp.id}">修改用户</a></td>
                <td><a href="${APP_PATH}/employee.do?action=delEmp&id=${emp.id}">删除用户</a></td>
            </tr>
        </c:forEach>
    </table>
    <c:forEach var="i" begin="1" end="${pageCount}">
        <a href="${APP_PATH}/employee.do?action=getList&pageNow=${i}">${i}</a>
    </c:forEach>
</form>
</body>
</html>
View Code

update.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
<html>
<head>
    <title>修改用户</title>
</head>
<body>
<form id="form" action="${APP_PATH}/employee.do?action=update" method="post">
    <table>
        <tr hidden>
            <td>id</td>
            <td><input type="text" name="id" value="${emp.id}"></td>
        </tr>
        <tr>
            <td>name</td>
            <td><input type="text" name="name" value="${emp.name}"></td>
        </tr>
        <tr>
            <td>email</td>
            <td><input type="text" name="email" value="${emp.email}"></td>
        </tr>
        <tr>
            <td>grade</td>
            <td><input type="text" name="grade" value="${emp.grade}"></td>
        </tr>
        <tr>
            <td>salary</td>
            <td><input type="text" name="salary" value="${emp.salary}"></td>
        </tr>
        <tr>
            <td><input type="submit" name="salary" value="修改"></td>
        </tr>
    </table>
</form>
</body>
</html>
View Code

err.jsp

扫描二维码关注公众号,回复: 9337632 查看本文章
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>操作失败</title>
</head>
<body>
<h1>操作失败</h1>
<a href="#">操作失败,返回主界面</a>
<a href="${APP_PATH}/employee.do?action=getList">返回列表</a>
<a href="${APP_PATH}/login.do?action=login">返回登录</a>
</body>
</html>
View Code

login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>管理员登录</title>
</head>
<body>
<h1>管理员登录</h1>
<form action="${APP_PATH}/login.do?action=doLogin" method="post">
    <table>
        <tr>
            <td>id:</td>
            <td><input type="text" name="id" value="1"></td>
        </tr>
        <tr>
            <td>name:</td>
            <td><input type="text" name="name" value="1哈哈"></td>
        </tr>
        <tr>
            <td>pwd:</td>
            <td><input type="password" name="password" value="1"></td>
        </tr>
        <tr>
            <td><input type="submit" name="sub1" value="登录"></td>
            <td><input type="reset" name="reset" value="重置"></td>
        </tr>
    </table>
</form>
</body>
</html>
View Code

main.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录成功</title>
</head>
<body>
<h1>登录成功</h1>
<a href="${APP_PATH}/login.do?action=login">返回登录</a>
<h2>欢迎 【${employee.name}】 您所在的部门是 【${employee.getDepartment().getName()} 】请选择您要进行的操作</h2>
<a href="${APP_PATH}/employee.do?action=addEmployeeUI">添加雇员</a> <br/>
<a href="${APP_PATH}/employee.do?action=getList">显示雇员</a> <br/>
<a href="#">查询雇员</a> <br/>
<a href="#">退出系统</a> <br/>
<a href="${APP_PATH}/employee.do?action=getList">返回列表</a>
</body>
</html>
View Code

ok.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>成功</title>
</head>
<body>
<h1>成功</h1>
<a href="${APP_PATH}/employee.do?action=addEmployeeUI">返回继续添加</a>
<a href="${APP_PATH}/employee.do?action=getList">返回列表</a>
<a href="${APP_PATH}/login.do?action=login">返回登录</a>
</body>
</html>
View Code

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
 <jsp:forward page="WEB-INF/jsp/login.jsp"></jsp:forward>
  </body>
</html>
View Code
 
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<jsp:forward page="WEB-INF/jsp/login.jsp"></jsp:forward>
</body>
</html>

猜你喜欢

转载自www.cnblogs.com/kikyoqiang/p/12347253.html
ssh