zoukankan      html  css  js  c++  java
  • 分布式实现登录

    导入依赖

    将所有的依赖都导入到父工程当中,供所有的子工程使用;

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-beans</artifactId>
          <version>5.1.5.RELEASE</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>5.1.5.RELEASE</version>
        </dependency>
        <dependency>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
          <version>1.2.16</version>
        </dependency>
        <dependency>
          <groupId>commons-logging</groupId>
          <artifactId>commons-logging</artifactId>
          <version>1.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
        <dependency>
          <groupId>org.aspectj</groupId>
          <artifactId>aspectjweaver</artifactId>
          <version>1.9.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-jdbc</artifactId>
          <version>5.1.5.RELEASE</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>5.1.38</version>
        </dependency>
        <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
          <version>3.4.6</version>
        </dependency>
        <dependency>
          <groupId>org.mybatis.generator</groupId>
          <artifactId>mybatis-generator-core</artifactId>
          <version>1.3.2</version>
        </dependency>
        <!--引入需要的ehcache插件-->
        <dependency>
          <groupId>net.sf.ehcache</groupId>
          <artifactId>ehcache</artifactId>
          <version>1.2.3</version>
        </dependency>
        <!--mybatis整合ehcache的jar-->
        <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis-ehcache</artifactId>
          <version>1.0.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
        <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis-spring</artifactId>
          <version>1.3.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
        <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>druid</artifactId>
          <version>1.1.10</version>
        </dependency>
        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
          <version>1.7.25</version>
        </dependency>
    
    
        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
          <version>1.7.25</version>
          <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
        <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>fastjson</artifactId>
          <version>1.2.47</version>
        </dependency>
    
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-webmvc</artifactId>
          <version>5.1.5.RELEASE</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-web</artifactId>
          <version>5.1.5.RELEASE</version>
        </dependency>
        <dependency>
          <groupId>javaee</groupId>
          <artifactId>javaee-api</artifactId>
          <version>5</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
        <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-core</artifactId>
          <version>2.9.8</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
        <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-databind</artifactId>
          <version>2.9.8</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
        <dependency>
          <groupId>commons-io</groupId>
          <artifactId>commons-io</artifactId>
          <version>2.4</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
        <dependency>
          <groupId>commons-fileupload</groupId>
          <artifactId>commons-fileupload</artifactId>
          <version>1.3.1</version>
        </dependency>
        <dependency>
          <groupId>jstl</groupId>
          <artifactId>jstl</artifactId>
          <version>1.2</version>
        </dependency>
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
          <version>3.1.0</version>
          <scope>provided</scope>
        </dependency>
    
        <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>dubbo</artifactId>
          <version>2.5.3</version>
          <exclusions>
            <exclusion>
              <groupId>org.springframework</groupId>
              <artifactId>spring</artifactId>
            </exclusion>
          </exclusions>
        </dependency>
    
    
        <dependency>
          <groupId>org.apache.zookeeper</groupId>
          <artifactId>zookeeper</artifactId>
          <version>3.4.10</version>
        </dependency>
        <dependency>
          <groupId>com.github.sgroschupf</groupId>
          <artifactId>zkclient</artifactId>
          <version>0.1</version>
        </dependency>
    
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-webmvc</artifactId>
          <version>5.1.5.RELEASE</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-web</artifactId>
          <version>5.1.5.RELEASE</version>
        </dependency>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
          <scope>test</scope>
        </dependency>
      </dependencies>
    View Code

    接口及公共模块

      该模块是服务端和消费者端都需要用到的公共模块,包括服务接口以及接口所依赖的实体类,当然其他的公共资源也可以放到这个模块中,公共模块的目录结构如下:

        

      实体类   

    package com.dubbo.entity;
    
    import java.io.Serializable;
    import java.util.Date;
    
    public class Dev_user implements Serializable{
        private Integer uid;
    
        private String devcode;
    
        private String devname;
    
        private String devpassword;
    
        private String devemail;
    
        private String devinfo;
    
        private Integer createdby;
    
        private Date creationdate;
    
        private Integer modifyby;
    
        private Date modifydate;
    
        public Integer getUid() {
            return uid;
        }
    
        public void setUid(Integer uid) {
            this.uid = uid;
        }
    
        public String getDevcode() {
            return devcode;
        }
    
        public void setDevcode(String devcode) {
            this.devcode = devcode;
        }
    
        public String getDevname() {
            return devname;
        }
    
        public void setDevname(String devname) {
            this.devname = devname;
        }
    
        public String getDevpassword() {
            return devpassword;
        }
    
        public void setDevpassword(String devpassword) {
            this.devpassword = devpassword;
        }
    
        public String getDevemail() {
            return devemail;
        }
    
        public void setDevemail(String devemail) {
            this.devemail = devemail;
        }
    
        public String getDevinfo() {
            return devinfo;
        }
    
        public void setDevinfo(String devinfo) {
            this.devinfo = devinfo;
        }
    
        public Integer getCreatedby() {
            return createdby;
        }
    
        public void setCreatedby(Integer createdby) {
            this.createdby = createdby;
        }
    
        public Date getCreationdate() {
            return creationdate;
        }
    
        public void setCreationdate(Date creationdate) {
            this.creationdate = creationdate;
        }
    
        public Integer getModifyby() {
            return modifyby;
        }
    
        public void setModifyby(Integer modifyby) {
            this.modifyby = modifyby;
        }
    
        public Date getModifydate() {
            return modifydate;
        }
    
        public void setModifydate(Date modifydate) {
            this.modifydate = modifydate;
        }
    
        public Dev_user(Integer uid, String devcode, String devname, String devpassword, String devemail, String devinfo, Integer createdby, Date creationdate, Integer modifyby, Date modifydate) {
            this.uid = uid;
            this.devcode = devcode;
            this.devname = devname;
            this.devpassword = devpassword;
            this.devemail = devemail;
            this.devinfo = devinfo;
            this.createdby = createdby;
            this.creationdate = creationdate;
            this.modifyby = modifyby;
            this.modifydate = modifydate;
        }
    
        public Dev_user(){
    
        }
    }
    View Code

      service接口

    public interface UserService {
        //用戶登陸
        public Dev_user login(String devCode, String devPassword);
    
    }

    生产者

        

      导入依赖

     <dependencies>
    
        <!--公共模块导入的依赖-->   <dependency> <groupId>com.dubbo</groupId> <artifactId>dubbo_service01_02</artifactId> <version>1.0-SNAPSHOT</version> <scope>compile</scope> </dependency> </dependencies>

      dao接口层

    @Repository("userDao")
    public interface UserDao {
        //用戶登陸
        public Dev_user login(@Param("devCode") String devCode, @Param("devPassword") String devPassword);
    }

      dao.xml层

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
    <mapper namespace="com.dubbo02.dao.UserDao">
    
        <!--登录-->
        <select id="login" resultType="com.dubbo.entity.Dev_user">
            SELECT * FROM dev_user WHERE devcode=#{devCode} AND devpassword=#{devPassword}
        </select>
    
    </mapper>

      serviceImpl实现层

        在pom.xml文件中带入了接口及公共模块的依赖,所以这里就不需要编写service接口层和实现类

    @Service("userService")
    public class UserServiceImpl implements UserService {
    
        //植入dao层对象
        @Resource(name = "userDao")
        private UserDao dao;
    
        @Override
        public Dev_user login(String devCode, String devPassword) {
            return dao.login(devCode,devPassword);
        }
    }

      jdbc.properties文件

    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql:///appinfodb
    jdbc.username=root
    jdbc.password=123

      applicationCotext.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:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx"
           xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"
           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/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring.xsd">
        
      <!--扫描注解--> <context:component-scan base-package="com.dubbo02"/>
    <!--添加MVC支持--> <mvc:annotation-driven/> <!--加载配置文件--> <context:property-placeholder location="classpath:jdbc.properties"/> <!--配置数据源--> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="driverClassName" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </bean> <!--SqlSessionFactory--> <bean class="org.mybatis.spring.SqlSessionFactoryBean"> <!--加载数据源--> <property name="dataSource" ref="dataSource"/> <!--加载Mybatis配置文件--> <property name="configLocation" value="classpath:mybatis-config.xml"/> </bean> <!--扫描Dao层--> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.dubbo02.dao"/> </bean> <!--开启事务注解支持--> <tx:annotation-driven/> <!--事务管理器--> <bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <!--服务器的应用名称--> <dubbo:application name="dubbo02_zook"/> <!--需要扫描的服务所在的包--> <dubbo:annotation package="com.dubbo02.service"/> <!--指定的注册中心--> <dubbo:registry address="zookeeper://127.0.0.1:2181"/> <!--用户中心暴露的端口服务--> <dubbo:protocol name="dubbo" prompt="20882"/> <!--声明需要暴露的服务接口--> <dubbo:service interface="com.dubbo.service.UserService" ref="userService" /> </beans>

      mybatis-config.xml文件

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <!--根节点-->
    <configuration>
    
        <settings>
            <!--log4j配置引入-->
            <setting name="logImpl" value="LOG4J"/>
            <!--全局映射-->
            <setting name="autoMappingBehavior" value="FULL"/>
        </settings>
    
        <!--mappers 代表小配置集合-->
        <mappers>
            <!--<mapper resource="org/mybatis/example/BlogMapper.xml"/>-->
           <package name="com.dubbo02.dao"/>
        </mappers>
    
    </configuration>

      web.xml文件

    <!DOCTYPE web-app PUBLIC
            "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
            "http://java.sun.com/dtd/web-app_2_3.dtd" >
    
    <web-app>
      <display-name>Archetype Created Web Application</display-name>
      <filter>
        <filter-name>characterEncodingFilter</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>
        <!--强制使用UTF-8编码-->
        <init-param>
          <param-name>forceEncoding</param-name>
          <param-value>true</param-value>
        </init-param>
      </filter>
      <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/</url-pattern>
      </filter-mapping>
    
      <!--中央调度器-->
      <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:applicationCotext.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
      </servlet-mapping>
    
    </web-app>

      配置Tomcat

            

        启动生产者即可;

    消费者

        

      导入依赖

        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.11</version>
                <scope>test</scope>
            </dependency>
    
            <dependency>
                <groupId>com.dubbo</groupId>
                <artifactId>dubbo_service01_02</artifactId>
                <version>1.0-SNAPSHOT</version>
                <scope>compile</scope>
            </dependency>
        </dependencies>

      web.xml文件

    <!DOCTYPE web-app PUBLIC
            "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
            "http://java.sun.com/dtd/web-app_2_3.dtd" >
    
    <web-app>
      <display-name>Archetype Created Web Application</display-name>
      <filter>
        <filter-name>characterEncodingFilter</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>
        <!--强制使用UTF-8编码-->
        <init-param>
          <param-name>forceEncoding</param-name>
          <param-value>true</param-value>
        </init-param>
      </filter>
      <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/</url-pattern>
      </filter-mapping>
    
      <!--中央调度器-->
      <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:applicationContext.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
      </servlet-mapping>
    
      <!-- 设置欢迎页面 -->
      <welcome-file-list>
        <welcome-file>jsp/devlogin.jsp</welcome-file>
      </welcome-file-list>
    </web-app>

      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:dubbo="http://code.alibabatech.com/schema/dubbo"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:mvc="http://www.springframework.org/schema/mvc" 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://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
    
        <!--名称-->
        <dubbo:application name="dubbo01"/>
        <!--需要注解-->
        <dubbo:annotation package="com.dubbo01.controller"/>
        <!--指定的注册中心-->
        <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
        <!--service-->
        <dubbo:reference interface="com.dubbo.service.UserService" id="userService"/>
    
        <!--扫描注解-->
        <context:component-scan base-package="com.dubbo01"/>
    
        <!--添加MVC支持-->
        <mvc:annotation-driven/>
    
        <!--开启事务注解支持-->
        <tx:annotation-driven/>
    
        <!--释放静态资源-->
        <mvc:default-servlet-handler/>
    
        <!--配置视图解析器-->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/jsp/"/>
            <property name="suffix" value=".jsp"/>
        </bean>
    
    </beans>

      UserController控制层

    @Controller
    @RequestMapping("/user")
    public class UserController {
    
        @Resource
        private UserService userService;
    
        @RequestMapping("/login")
        public ModelAndView login(Dev_user user, ModelAndView mv, HttpServletRequest request){
            System.out.println("dfdfdfdf");
            Dev_user login = userService.login(user.getDevcode(),user.getDevpassword());
            System.out.println(login);
            if (login!=null){
                request.getSession().setAttribute("login",login);
                System.out.println("登录成功");
                mv.setViewName("main");
            }else{
                System.out.println("失败");
                mv.setViewName("devlogin");
            }
            return mv;
        }
    
    }

      devlogin.jsp登录页面

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8" isELIgnored="false" %>
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <!-- Meta, title, CSS, favicons, etc. -->
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
    
        <title>APP开发者平台</title>
    
        <!-- Bootstrap -->
        <link href="${pageContext.request.contextPath }/statics/css/bootstrap.min.css" rel="stylesheet">
        <!-- Font Awesome -->
        <link href="${pageContext.request.contextPath }/statics/css/font-awesome.min.css" rel="stylesheet">
        <!-- NProgress -->
        <link href="${pageContext.request.contextPath }/statics/css/nprogress.css" rel="stylesheet">
        <!-- Animate.css -->
        <%--<link href="https://colorlib.com/polygon/gentelella/css/animate.min.css" rel="stylesheet">--%>
    
        <!-- Custom Theme Style -->
        <link href="${pageContext.request.contextPath }/statics/css/custom.min.css" rel="stylesheet">
      </head>
    
      <body class="login">
        <div>
          <a class="hiddenanchor" id="signup"></a>
          <a class="hiddenanchor" id="signin"></a>
    
          <div class="login_wrapper">
            <div class="animate form login_form">
              <section class="login_content">
                <form action="${pageContext.request.contextPath }/user/login" method="post">
                  <h1>APP开发者平台</h1>
                  <div>
                    <input type="text" class="form-control" id="username" name="devcode" placeholder="请输入用户名" required="" />
                  </div>
                  <div>
                    <input type="password" class="form-control" id="password" name="devpassword" placeholder="请输入密码" required="" />
                  </div>
                  <span>${error }</span>
                  <div>
                      <button type="submit" id="submit" onclick="check()" class="btn btn-success">登     录</button>
                      <button type="reset" class="btn btn-default">重 填</button>
                  </div>
    
                  <div class="clearfix"></div>
    
                  <div class="separator">
                    <div>
                      <p>©2016 All Rights Reserved. </p>
                    </div>
                  </div>
                </form>
              </section>
            </div>
          </div>
        </div>
      </body>
    </html>
    View Code

      main.jsp首页

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8" isELIgnored="false"%>
    
    <div class="page-title">
        <div class="title_left">
            <h3>
                欢迎你:${login.devname }<strong> | 角色:开发者账户</strong>
            </h3>
        </div>
    </div>
    <div class="clearfix"></div>
    View Code

      配置Tomcat启动

          

      测试结果

            

          

           

  • 相关阅读:
    javascript实现网页分享至朋友圈功能
    Vue中全局过滤器期与局部过滤器期的使用
    vue中添加与删除,关键字搜索
    vue生命周期
    4种常用的Ajax请求方式
    CSS 基础总结
    BEM思想之彻底弄清BEM语法
    学习前端过程中用到的资料
    深入理解,函数声明、函数表达式、匿名函数、立即执行函数、window.onload的区别.
    html基础
  • 原文地址:https://www.cnblogs.com/wnwn/p/11964818.html
Copyright © 2011-2022 走看看