zoukankan      html  css  js  c++  java
  • Struts+spring+Hibernate 制作一个简单的登录验证

    asp.net mvc 理论群:516356157  人还少

    index.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>Insert title here</title>
    </head>
    <body>
    <jsp:forward page="/WEB-INF/login.jsp"></jsp:forward>
    </body>
    </html>

    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>Insert title here</title>
    </head>
    <body>
    <div align="center">
    <h1>管理员登陆</h1>
    <form action="/test/login.do?flag=login" method="post">
    <table>
    <tr><td>id:</td><td><input name="name" type="text" style=" 158px; "></input></td></tr>
    <tr><td>pw:</td><td><input name="pwd" type="password" style=" 158px; "></input></td></tr>
    <tr><td><td><input name="submit" type="submit" value="登 录"></input>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="reset" value="重 置"></input></td></tr>
    </table>
    </form>
    </div>
    </body>
    </html>

    mainFrame.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>Insert title here</title>
    </head>
    <body>
    <h2>请选择你要的操作 </h2>
    <a href="#">添加雇员</a>
    <a href="#">显示雇员</a>
    <a href="#">查询雇员</a>
    <a href="#">退出系统</a>
    </body>
    </html>

    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="loginForm" type="com.iflve.web.forms.LoginForm"></form-bean>
    </form-beans>
    <action-mappings>
    <action path="/login" parameter="flag" name="loginForm" type="com.iflve.web.action.LoginDispatchAction" >
    <forward name="ok" path="/WEB-INF/mainFrame.jsp"></forward>
    <forward name="err" path="/WEB-INF/login.jsp"></forward>
    </action>
    </action-mappings>
    </struts-config>

    web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
    <display-name>test</display-name>
    <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>

    <!-- 配置struts -->
    <servlet>
    <servlet-name>struts</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>0</load-on-startup>
    </servlet>

    <servlet-mapping>
    <servlet-name>struts</servlet-name>
    <url-pattern>*.do</url-pattern>
    </servlet-mapping>

    <!-- 在web容器中初始化spring容器 -->
    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:beans.xml</param-value>
    </context-param>
    <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    </web-app>

    beans.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p" xmlns:util="http://www.springframework.org/schema/util" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
    xmlns:cache="http://www.springframework.org/schema/cache"
    xsi:schemaLocation="
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx.xsd
    http://www.springframework.org/schema/jdbc
    http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
    http://www.springframework.org/schema/cache
    http://www.springframework.org/schema/cache/spring-cache-3.2.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop.xsd
    http://www.springframework.org/schema/util
    http://www.springframework.org/schema/util/spring-util.xsd">


    <!-- 配置数据源,在spring的spring-framework-reference中有详细介绍 -->
    <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <!-- results in a setDriverClassName(String) call -->
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/test"/>
    <property name="username" value="root"/>
    <property name="password" value="123456"/>
    <!-- 连接池启动时的初始值 -->
    <property name="initialSize" value="3"></property>
    <!-- 连接池的最大值 -->
    <property name="maxActive" value="500"></property>
    <!-- 最大空闲值 -->
    <property name="maxIdle" value="2"></property>
    <!-- 最小空闲值 -->
    <property name="minIdle" value="1"></property>
    <!-- java链接数据库JDBC,Spring提倡使用数据源
    ①初始化时配置若干个数据库链接,放入连接池中【 连接池启动时的初始值initialSize】。
    ②当初始值的连接已满,则会创建新的连接,但是新创建的连接数量不会超过maxactive所设置的连接。超出最大值后放入队列池,等待前面的链接释放。
    ③空闲时最大空闲2个链接。
    ④最小空闲值:空闲时最少保持一个链接 不间断。
    -->
    </bean>
    <!-- 配置SessionFactory[会话工厂] -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <!-- 设置数据源 -->
    <property name="dataSource" ref="myDataSource"></property>
    <!-- 接管Hibernate的对象映射文件集合 -->
    <property name="mappingResources">
    <list>
    <value>com/iflve/domain/Employee.hbm.xml</value>
    </list>
    </property>
    <property name="hibernateProperties">
    <value>
    <!-- hibernate方言 -->
    hibernate.dialect=org.hibernate.dialect.MySQLDialect
    <!-- 自动根据对象和关系映射文件创建数据库 -->
    hibernate.hbm2ddl.auto=update
    <!-- 显示被翻译的sql语句 -->
    hibernate.show_sql=false
    </value>
    </property>
    </bean>

    <!-- 配置EmployeeService -->
    <bean id="employeeService" class="com.iflve.service.imp.EmployeeService">
    <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>

    <!-- 配置事务管理器接管employee  [spring的事务管理器接管hibernate的事务处理 @Transactional] -->
    <bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
    <tx:annotation-driven transaction-manager="txManager"/>
    </beans>

    Employee.java  //

    package com.iflve.domain;

    import java.util.Date;

    public class Employee {
    private Integer id;
    private String name;
    private String pwd;
    private java.util.Date hiredate;
    private float salary;
    private String email;
    private String grade;

    //无参数的构造函数去掉会报错
    public Employee(){

    }

    //该构造函数用于在hibernate的数据库关系映射文件中创建表
    public Employee(String name, String pwd, String grade, Date hiredate, float salary,
    String email) {
    this.name = name;
    this.pwd = pwd;
    this.grade = grade;
    this.hiredate = hiredate;
    this.salary = salary;
    this.email = email;
    }
    public String getGrade() {
    return grade;
    }
    public void setGrade(String grade) {
    this.grade = grade;
    }
    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 getPwd() {
    return pwd;
    }
    public void setPwd(String pwd) {
    this.pwd = pwd;
    }
    public java.util.Date getHiredate() {
    return hiredate;
    }
    public void setHiredate(java.util.Date hiredate) {
    this.hiredate = hiredate;
    }
    public float getSalary() {
    return salary;
    }
    public void setSalary(float salary) {
    this.salary = salary;
    }
    public String getEmail() {
    return email;
    }
    public void setEmail(String email) {
    this.email = email;
    }


    }

    //hiberante关系映射文件用于创建数据表,其内容对应employee中的带参数的构造函数.

    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 package="com.iflve.domain">
    <class name="Employee" table="employee">
    <!-- 主键生成策略 -->
    <id name="id" type="java.lang.Integer">
    <generator class="native"></generator>
    </id>
    <!-- 属性名字 -->
    <property name="name" type="java.lang.String">
    <column name="name" length="64"></column>
    </property>
    <!-- 属性入职时间密码 -->
    <property name="pwd" type="java.lang.String">
    <column name="pwd" length="32"></column>
    </property>
    <!-- 属性级别-->
    <property name="grade" type="java.lang.String">
    <column name="grade" length="16"></column>
    </property>
    <!-- 属性入职时间 -->
    <property name="hiredate" type="java.util.Date">
    <column name="hiredate"></column>
    </property>
    <!-- 属性薪水 -->
    <property name="salary" type="java.lang.Float">
    <column name="salary"></column>
    </property>
    <!-- 属性email -->
    <property name="email" type="java.lang.String">
    <column name="email" length="64"></column>
    </property>
    </class>
    </hibernate-mapping>

    //目标对象的Service 该类实现了EmployeeServiceInter接口

    EmployeeService.java

    package com.iflve.service.imp;

    import java.io.Serializable;
    import java.util.List;
    import org.hibernate.SessionFactory;
    import org.springframework.transaction.annotation.Transactional;

    import com.iflve.domain.Employee;
    import com.iflve.service.inter.EmployeeServiceInter;

    //这里配置这个注解,是让spring的事务管理器接管该service的所有事务
    @Transactional//beans.xml中声明的事务管理器,由spring来接管hibernate的事务处理
    public class EmployeeService implements EmployeeServiceInter {

    private SessionFactory sessionFactory; //生成get和set方法,对应beans.mxl中的一个bean
    public SessionFactory getSessionFactory() {
    return sessionFactory;
    }

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

    @Override
    public void add(Employee emp) {
    // TODO Auto-generated method stub
    sessionFactory.getCurrentSession().save(emp);

    }

    @Override
    public List<Employee> showEmployee() {
    // TODO Auto-generated method stub
    return null;
    }

    @Override
    public void update(Employee e) {
    // TODO Auto-generated method stub

    }

    @Override
    public void delEmployee(Serializable id) {
    // TODO Auto-generated method stub

    }

    @Override
    public Employee getEmployeeByID(Serializable id) {
    // TODO Auto-generated method stub
    return null;
    }

    @Override
    public Employee checkEmployee(Employee emp) {
    // TODO Auto-generated method stub]
    //String sql = "select *from employee where name=? and pwd=?"
    //sessionFactory.getCurrentSession().createSQLQuery(sql).setString(0, arg1)
    return null;
    }

    }

    //servive的接口

    EmployeeServiceInter.java   

    /**
    *
    */
    package com.iflve.service.inter;

    import java.util.List;

    import com.iflve.domain.Employee;

    /**
    * @author sjcx
    *
    */
    public interface EmployeeServiceInter {
    public void add(Employee emp);
    public List<Employee> showEmployee();
    public void update(Employee e);
    public void delEmployee(java.io.Serializable id);
    //通过id获取Employee
    public Employee getEmployeeByID(java.io.Serializable id);
    //检查用户是否存在 如果存在则返货完整id 如果不存在则返回null
    public Employee checkEmployee(Employee emp);
    }

    //登录验证的action

    LoginDispatchAction.java

    package com.iflve.web.action;

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

    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 org.springframework.web.context.WebApplicationContext;
    import org.springframework.web.context.support.WebApplicationContextUtils;

    import com.iflve.service.inter.EmployeeServiceInter;
    import com.iflve.web.forms.LoginForm;

    public class LoginDispatchAction extends DispatchAction {

    private WebApplicationContext webApplicationContext;

    public ActionForward login(ActionMapping arg0, ActionForm arg1,
    HttpServletRequest arg2, HttpServletResponse arg3) throws Exception {
    // TODO Auto-generated method stub




    System.out.println("11111111111111111111111111");
    LoginForm loginForm=(LoginForm)arg1;

    if(loginForm.getPwd().equals("123")){
    return arg0.findForward("ok");
    }else{
    return arg0.findForward("err");
    }


    }

    public ActionForward loginout(ActionMapping arg0, ActionForm arg1,
    HttpServletRequest arg2, HttpServletResponse arg3) throws Exception {
    // TODO Auto-generated method stub
    return super.execute(arg0, arg1, arg2, arg3);
    }
    }

    //该类中的属性对应于提交表单中要提交的字段,为其生成get和set方法

    LoginForm.java

    package com.iflve.web.forms;

    import org.apache.struts.action.ActionForm;

    public class LoginForm extends ActionForm {
    /**
    *
    */
    private static final long serialVersionUID = 1L;
    private String name;
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    public String getPwd() {
    return pwd;
    }
    public void setPwd(String pwd) {
    this.pwd = pwd;
    }
    private String pwd;
    }

    需要用到的包: 在网盘中

    重点关注:

    ①Hibernate的关系映射文件Hibernate.hbm.xml如何映射类中的构造函数。

    ②spring接管sessionFactory的事务管理 [beans.xml中声明事务管理器,在事务处理的地方@Transactional]

    ③在tomcat中初始化spring容器

    ④表单提交中报资源无效的问题

  • 相关阅读:
    慕课网 -- 性能优化之PHP优化总结笔记
    安装memcached服务 和 php 安装memcache扩展
    配置 host only 后 nat不能上网了
    linux svn soeasy
    wamp ssl配置https
    wamp 配置多站点访问
    安装wamp 缺少msvcr100.dll
    vagrant 相关记录
    复制mysql数据库的步骤
    php 的两个扩展 memcache 和 memcachd
  • 原文地址:https://www.cnblogs.com/dagedan/p/4456399.html
Copyright © 2011-2022 走看看