zoukankan      html  css  js  c++  java
  • ssh环境搭建并实现登录功能

    参照了这篇博客,但是里面有些地方进行了更改

    在昨天添加struts2和hibernate的中间添加spring,比较简单,方法类似,直接finish就可以。hibernate需要next进行相应的选择。
    然后自动生成了applicationContext.xml。
    注意三个框架的顺序是struts2,spring,hibernate。然后我们可以看到数据库的配置信息加入到了applicationContext.xml。
    后面反向生成实体类和dao的时候配置信息也加入到了applicationContext.xml。
    但是我们自己编写的dao,impl,service需要自己进行配置

    User.java和User.hbm.xml反向生成

    package com.us.mine.beans;
    
    /**
     * User entity. @author MyEclipse Persistence Tools
     */
    
    public class User implements java.io.Serializable {
    
        // Fields
    
        private Integer userId;
        private String userName;
        private String password;
        private Integer gender;
    
        // Constructors
    
        /** default constructor */
        public User() {
        }
    
        /** full constructor */
        public User(String userName, String password, Integer gender) {
            this.userName = userName;
            this.password = password;
            this.gender = gender;
        }
    
        // Property accessors
    
        public Integer getUserId() {
            return this.userId;
        }
    
        public void setUserId(Integer userId) {
            this.userId = userId;
        }
    
        public String getUserName() {
            return this.userName;
        }
    
        public void setUserName(String userName) {
            this.userName = userName;
        }
    
        public String getPassword() {
            return this.password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public Integer getGender() {
            return this.gender;
        }
    
        public void setGender(Integer gender) {
            this.gender = gender;
        }
    
    }
    User.java
    <?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">
    <!-- 
        Mapping file autogenerated by MyEclipse Persistence Tools
    -->
    <hibernate-mapping>
        <class name="com.us.mine.beans.User" table="user" catalog="world">
            <id name="userId" type="java.lang.Integer">
                <column name="userId" />
                <generator class="native" />
            </id>
            <property name="userName" type="java.lang.String">
                <column name="userName" length="16" not-null="true" />
            </property>
            <property name="password" type="java.lang.String">
                <column name="password" length="16" not-null="true" />
            </property>
            <property name="gender" type="java.lang.Integer">
                <column name="gender" not-null="true" />
            </property>
        </class>
    </hibernate-mapping>
    User.hbm.xml

    然后是登录页,注意元素的name要和action类中的一致,form的action要和struts.xml中一致。加一个登录成功页main.jsp。

    <body>
        <form method="post" action="Login">
               用户名:<input name="username" type="text" />                        
                    密码:<input name="password" type="password" />        <input
                name="Submits" type="submit" value="登录" />       <input name="ReSet"
                type="reset" value="重置" /> 
        </form>
    </body>
    index.jsp

    然后LoginDao,LoginDaoImpl,LoginService,LoginServiceImpl

    package com.us.mine.dao;
    
    public interface LoginDao {
        boolean login(String username, String password);
    }
    LoginDao.java
    package com.us.mine.dao;
    
    import java.util.List;
    
    import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
    
    import com.us.mine.beans.User;
    
    public class LoginDaoImpl extends HibernateDaoSupport implements LoginDao {
    
        @Override
        public boolean login(String username, String password) {
            List<User> u=this.getHibernateTemplate().find("from User where userName=? and password=?",username,password);
            Boolean flag=false;
            if(u.size()>0){
                flag=true;
            }
            return flag;
        }
    
    }
    LoginDaoImpl
    package com.us.mine.service;
    
    public interface LoginService {
        boolean login(String username, String password);
    }
    LoginService
    package com.us.mine.service;
    
    import com.us.mine.dao.LoginDao;
    import com.us.mine.dao.LoginDaoImpl;
    
    public class LoginServiceImpl implements LoginService {
    
        private LoginDao logindao;
    
        public void setLogindao(LoginDaoImpl loginDao) {
            this.logindao = loginDao;
        }
    
        @Override
        public boolean login(String username, String password) {
            return logindao.login(username, password);
        }
    
    }
    LoginServiceImpl

    然后是LoginAction 并在struts.xml中进行配置,注意action的class填写的和application里面注入的action的id相同

    package com.us.mine.action;
    
    import com.opensymphony.xwork2.ActionSupport;
    import com.us.mine.service.LoginService;
    
    public class LoginAction extends ActionSupport{
        private LoginService loginservice;
        private String password;
        private String username;
        
        
        public LoginService getLoginservice() {
            return loginservice;
        }
    
    
        public void setLoginservice(LoginService loginservice) {
            this.loginservice = loginservice;
        }
    
    
        public String getPassword() {
            return password;
        }
    
    
        public void setPassword(String password) {
            this.password = password;
        }
    
    
        public String getUsername() {
            return username;
        }
    
    
        public void setUsername(String username) {
            this.username = username;
        }
    
    
        public String login(){
            Boolean flag=loginservice.login(username, password);
            if(flag){
                return SUCCESS;
            }else{
                return INPUT;
            }
        }
    }
    LoginAction
    <?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="default" extends="struts-default" namespace="/">
            <action name="Login" class="logina" method="login">
                <result name="input">/index.jsp</result>
                <result name="success">/main.jsp</result>
            </action>
        </package>
    </struts>    
    struts.xml

    最后是applicationContext.xml。主要是最下面3个bean,可以看到类之间的注入关系

    <?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.1.xsd">
    
    
        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
            <property name="url" value="jdbc:mysql://localhost:3306/world"></property>
            <!-- 加入后解决数据库连接不上错误 -->
            <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
            <property name="username" value="root"></property>
            <property name="password" value="1234"></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/us/mine/beans/User.hbm.xml</value>
                </list>
            </property>
        </bean>
        <bean id="UserDAO" class="com.us.mine.dao.UserDAO">
            <property name="sessionFactory">
                <ref bean="sessionFactory" />
            </property>
        </bean>
    
        <!-- Dao注入sessionFactory -->
        <bean id="logind" class="com.us.mine.dao.LoginDaoImpl">
            <!-- 注入持久化操作所需的SessionFactory -->
            <property name="sessionFactory">
                <ref bean="sessionFactory" />
            </property>
        </bean>
    
        <!-- service注入dao id为下面的ref class为service实现类 -->
        <bean id="logins" class="com.us.mine.service.LoginServiceImpl">
            <property name="logindao" ref="logind"></property>
        </bean>
    
        <!-- Action注入service id="" 注入 class="action路径" name="loginservice"与LoginAction中声明的要保持一致 
            ref随便取 -->
        <bean id="logina" class="com.us.mine.action.LoginAction" scope="prototype">
            <property name="loginservice" ref="logins"></property>
        </bean>
    </beans>
    applicationContext.xml

    运行后一直报错,发现上面的配置文件少了

    <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>加上后可以运行

    输入

     结果
  • 相关阅读:
    数据仓库
    HiveSQL 数据定义语言(DDL)
    HiveSQL 数据操控、查询语言(DML、DQL)
    【ASP.NET Core】Blazor+MiniAPI完成文件下载
    MySQL的WAL(WriteAhead Logging)机制
    MySQL系列 | 索引数据结构大全
    眼见为实,看看MySQL中的隐藏列
    mysql的默认隔离级别:可重复读(Repeatable Read)
    缓存淘汰算法LRU算法
    Android设计模式系列(12)SDK源码之生成器模式(建造者模式)
  • 原文地址:https://www.cnblogs.com/wangkaipeng/p/5711985.html
Copyright © 2011-2022 走看看