JavaWeb_(Spring框架)用户登陆Spring整合到Servlet中

一、使用servlet技术开发用户登陆功能

  在MySQL中准备一个user表,表中增加一条假数据

  

  

  使用Servlet实现用户登陆的功能

  

  用户登陆的<from>表单

  <form id="loginFrom" action="${pageContext.request.contextPath }/userLogin" method="post">
                    <div class="input-group input-group-lg sepH_a">
                        <span class="input-group-addon"><span class="icon_profile"></span></span>
                        <input type="text" class="form-control" placeholder="Username" name="username">
                    </div>
                    <div class="input-group input-group-lg">
                        <span class="input-group-addon"><span class="icon_key_alt"></span></span>
                        <input type="password" class="form-control" placeholder="Password" name="password">
                    </div>

                    <div>
                        <a id="errorMsg" href="javascript:void(0)" style="color: red">${errorMsg}</a>
                    </div>

                    <div class="sepH_c text-right">
                        <a href="javascript:void(0)" class="small">Forgot password?</a>
                    </div>
                    <div class="form-group sepH_c">
                        <a href="javascript:doucment:loginFrom.submit()" class="btn btn-lg btn-primary btn-block">Log in</a>
                    </div>
  </form>

<%@ 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 charset="UTF-8">
        <title>登录/注册</title>
        <meta name="viewport" content="initial-scale=1.0,maximum-scale=1.0,user-scalable=no">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">

        <!-- bootstrap framework -->
        <link href="${pageContext.request.contextPath }/css/bootstrap.min.css" rel="stylesheet" media="screen">
        <!-- elegant icons -->
        <link href="${pageContext.request.contextPath }/css/style.css" rel="stylesheet" media="screen">
        <!-- main stylesheet -->
        <link href="${pageContext.request.contextPath }/css/main.min.css" rel="stylesheet" media="screen">

        <!-- jQuery -->
        <script src="${pageContext.request.contextPath }/js/jquery.min.js"></script>

    </head>
    <body class="login_page">
        <div class="login_header">
        </div>
        <div class="login_register_form">
            <div class="form_wrapper animated-short" id="login_form">
                <h3 class="sepH_c"><span>Login</span> \ <a href="javascript:void(0)" class="form-switch" data-switch-form="register_form">Register</a></h3>
                <form id="loginFrom" action="${pageContext.request.contextPath }/userLogin" method="post">
                    <div class="input-group input-group-lg sepH_a">
                        <span class="input-group-addon"><span class="icon_profile"></span></span>
                        <input type="text" class="form-control" placeholder="Username" name="username">
                    </div>
                    <div class="input-group input-group-lg">
                        <span class="input-group-addon"><span class="icon_key_alt"></span></span>
                        <input type="password" class="form-control" placeholder="Password" name="password">
                    </div>

                    <div>
                        <a id="errorMsg" href="javascript:void(0)" style="color: red">${errorMsg}</a>
                    </div>

                    <div class="sepH_c text-right">
                        <a href="javascript:void(0)" class="small">Forgot password?</a>
                    </div>
                    <div class="form-group sepH_c">
                        <a href="javascript:doucment:loginFrom.submit()" class="btn btn-lg btn-primary btn-block">Log in</a>
                    </div>
                </form>
            </div>
            <div class="form_wrapper animated-short" id="register_form" style="display:none">
                <h3 class="sepH_c"><span>Register</span> \ <a href="javascript:void(0)" class="form-switch" data-switch-form="login_form">Login</a></h3>
                <form name = "registerForm" action="${pageContext.request.contextPath}/userRegister" method="post">
                    <div class="input-group input-group-lg sepH_a">
                        <span class="input-group-addon"><span class="icon_profile"></span></span>
                        <input type="text" class="form-control" placeholder="Username" name="username">
                    </div>
                    <div class="input-group input-group-lg sepH_a">
                        <span class="input-group-addon"><span class="icon_key_alt"></span></span>
                        <input type="password" class="form-control" placeholder="Password" name="password">
                    </div>
                    <div class="input-group input-group-lg sepH_c">
                        <span class="input-group-addon"><span class="icon_mail_alt"></span></span>
                        <input type="email" class="form-control" placeholder="Email" name="email">
                    </div>
                    <div class="form-group sepH_c">
                        <a href="javascript:doucment:registerForm.submit()" class="btn btn-lg btn-success btn-block">Register</a>
                    </div>
                </form>
            </div>
        </div>

        <script>
            $(function () {
                $(‘.form-switch‘).on(‘click‘, function (e) {
                    e.preventDefault();

                    var $switchTo = $(this).data(‘switchForm‘),
                        $thisForm = $(this).closest(‘.form_wrapper‘);

                    $(‘.form_wrapper‘).removeClass(‘fadeInUpBig‘);
                    $thisForm.addClass(‘fadeOutDownBig‘);

                    setTimeout(function () {
                        $thisForm.removeClass(‘fadeOutDownBig‘).hide();
                        $(‘#‘ + $switchTo).show().addClass(‘fadeInUpBig‘);
                    }, 300);

                });
            });
        </script>
    </body>
</html>

login_page.jsp

package com.Gary.bean;

public class User {

    private Integer u_id;
    private String u_username;
    private String u_password;

    public Integer getU_id() {
        return u_id;
    }
    public void setU_id(Integer u_id) {
        this.u_id = u_id;
    }
    public String getU_username() {
        return u_username;
    }
    public void setU_username(String u_username) {
        this.u_username = u_username;
    }
    public String getU_password() {
        return u_password;
    }
    public void setU_password(String u_password) {
        this.u_password = u_password;
    }

}

User.java

package com.Gary.dao;

import java.beans.PropertyVetoException;
import java.sql.SQLException;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;

import com.Gary.bean.User;
import com.mchange.v2.c3p0.ComboPooledDataSource;

public class UserDao {

    private static ComboPooledDataSource dataSource;

    static {
        //配置c3p0
        try {
            //使用c3p0链接数据库
            dataSource = new ComboPooledDataSource();
            dataSource.setDriverClass("com.mysql.jdbc.Driver");
            dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/ssm_spring");
            dataSource.setUser("root");
            dataSource.setPassword("123456");
        } catch (PropertyVetoException e) {

            e.printStackTrace();
        }
    }

    //通过数据库获取用户
    public User getUserByInfo(User u) throws SQLException {

        //使用dbutils操作数据库 查询并返回用户对象
        QueryRunner qr = new QueryRunner(dataSource);

        String sql ="select * from user where u_username = ? and u_password = ?";

        return    qr.query(sql, new BeanHandler<User>(User.class),u.getU_username(),u.getU_password());

    }

}

UserDao.java

package com.Gary.service;

import java.sql.SQLException;

import com.Gary.bean.User;
import com.Gary.dao.UserDao;

public class UserService{

    private UserDao ud= new UserDao();

    public User getUserByInfo(User u) throws SQLException {

        return ud.getUserByInfo(u);
    }

}

UserService.java

package com.Gary.web;

import java.io.IOException;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.Gary.bean.User;
import com.Gary.service.UserService;

@WebServlet("/userLogin")
public class UserLoginServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //接收表单数据
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        //封装成User对象
        User u = new User();
        u.setU_username(username);
        u.setU_password(password);

        //调用service方法验证
        UserService us = new UserService();
        User loginUser = null;
        try {
            loginUser = us.getUserByInfo(u);
        } catch (SQLException e) {

            e.printStackTrace();
        }

        //根据用户验证结果进行操作
        if(loginUser == null)
        {
            //验证成功登陆,并重定向到index.jsp
            request.setAttribute("errorMsg", "用户名或密码错误");
            request.getRequestDispatcher("/login_page.jsp").forward(request, response);
        }else {
            //验证失败,重定向到login_page.jsp
            HttpSession session = request.getSession();
            session.setAttribute("user", loginUser);
            response.sendRedirect(request.getContextPath()+"/index.jsp");
        }

    }

    public UserLoginServlet() {
        super();

    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);

    }

}

UserLoginServlet.java

  修改项目

  利用Spring改造项目

  导入Spring的核心包,并配置Spring随项目启动

  

package com.Gary.bean;

public class User {

    private Integer u_id;
    private String u_username;
    private String u_password;

    public Integer getU_id() {
        return u_id;
    }
    public void setU_id(Integer u_id) {
        this.u_id = u_id;
    }
    public String getU_username() {
        return u_username;
    }
    public void setU_username(String u_username) {
        this.u_username = u_username;
    }
    public String getU_password() {
        return u_password;
    }
    public void setU_password(String u_password) {
        this.u_password = u_password;
    }

}

User.java

package com.Gary.dao;

import java.beans.PropertyVetoException;
import java.sql.SQLException;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;

import com.Gary.bean.User;
import com.mchange.v2.c3p0.ComboPooledDataSource;

public class UserDao {

    /*
    private static ComboPooledDataSource dataSource;

    static {
        //配置c3p0
        try {
            //使用c3p0链接数据库
            dataSource = new ComboPooledDataSource();
            dataSource.setDriverClass("com.mysql.jdbc.Driver");
            dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/ssm_spring");
            dataSource.setUser("root");
            dataSource.setPassword("123456");
        } catch (PropertyVetoException e) {

            e.printStackTrace();
        }
    }
    */

    private ComboPooledDataSource dataSource;

    public void setDataSource(ComboPooledDataSource dataSource) {
        this.dataSource = dataSource;
    }

    //通过数据库获取用户
    public User getUserByInfo(User u) throws SQLException {

        //使用dbutils操作数据库 查询并返回用户对象
        QueryRunner qr = new QueryRunner(dataSource);

        String sql ="select * from user where u_username = ? and u_password = ?";

        return    qr.query(sql, new BeanHandler<User>(User.class),u.getU_username(),u.getU_password());

    }

}

UserDao.java

package com.Gary.service;

import java.sql.SQLException;

import com.Gary.bean.User;
import com.Gary.dao.UserDao;

public class UserService{

    private UserDao ud= new UserDao();

    public User getUserByInfo(User u) throws SQLException {

        return ud.getUserByInfo(u);
    }

    public void setUd(UserDao ud) {
        this.ud = ud;
    }

}

UserService.java

package com.Gary.web;

import java.io.IOException;
import java.sql.SQLException;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.Gary.bean.User;
import com.Gary.service.UserService;

@WebServlet("/userLogin")
public class UserLoginServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    private UserService us;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //接收表单数据
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        //封装成User对象
        User u = new User();
        u.setU_username(username);
        u.setU_password(password);

        //通过容器获取userService
        /*ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        us = (UserService) ac.getBean("userService");*/

        //在web项目中我们只需要一个spring容器

        //application域

        //ServletContext() 生命周期 随着web项目启动而创建  随着web项目关闭而销毁

        //ServletContextListener 可以通过配置监听器来达到我们的需求,在web项目创建时候创建容器,销毁时候关闭spring容器
        WebApplicationContext wac = WebApplicationContextUtils.getWebApplicationContext(getServletContext());
        us = (UserService)wac.getBean("userService");

        //调用service方法验证
        User loginUser = null;
        try {
            loginUser = us.getUserByInfo(u);
        } catch (SQLException e) {

            e.printStackTrace();
        }

        //根据用户验证结果进行操作
        if(loginUser == null)
        {
            //验证成功登陆,并重定向到index.jsp
            request.setAttribute("errorMsg", "用户名或密码错误");
            request.getRequestDispatcher("/login_page.jsp").forward(request, response);
        }else {
            //验证失败,重定向到login_page.jsp
            HttpSession session = request.getSession();
            session.setAttribute("user", loginUser);
            response.sendRedirect(request.getContextPath()+"/index.jsp");
        }

    }

    public UserLoginServlet() {
        super();

    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);

    }

}

UserLoginServlet.java

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xmlns="http://www.springframework.org/schema/beans"
            xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd ">

    <!-- 配置 dataSource -->
    <bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="com.mysql.jdbc.Driver"/>
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/ssm_spring"/>
        <property name="user" value="root"/>
        <property name="password" value="123456"/>
    </bean>

    <!-- 配置 dao -->
    <bean name="userDao" class="com.Gary.dao.UserDao">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!-- 配置 service -->
    <bean name="userService" class="com.Gary.service.UserService">
        <property name="ud" ref="userDao"/>
    </bean>

</beans>        

applicationContext.xml

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

  <!-- 配置监听器,在web项目启动后让spring启动 -->
  <listener>
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <!-- 读取spring的配置文件 -->
  <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:applicationContext.xml</param-value>
  </context-param>

  <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>
</web-app>

web.xml

<%@ 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 charset="UTF-8">
        <title>登录/注册</title>
        <meta name="viewport" content="initial-scale=1.0,maximum-scale=1.0,user-scalable=no">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">

        <!-- bootstrap framework -->
        <link href="${pageContext.request.contextPath }/css/bootstrap.min.css" rel="stylesheet" media="screen">
        <!-- elegant icons -->
        <link href="${pageContext.request.contextPath }/css/style.css" rel="stylesheet" media="screen">
        <!-- main stylesheet -->
        <link href="${pageContext.request.contextPath }/css/main.min.css" rel="stylesheet" media="screen">

        <!-- jQuery -->
        <script src="${pageContext.request.contextPath }/js/jquery.min.js"></script>

    </head>
    <body class="login_page">
        <div class="login_header">
        </div>
        <div class="login_register_form">
            <div class="form_wrapper animated-short" id="login_form">
                <h3 class="sepH_c"><span>Login</span> \ <a href="javascript:void(0)" class="form-switch" data-switch-form="register_form">Register</a></h3>
                <form id="loginFrom" action="${pageContext.request.contextPath }/userLogin" method="post">
                    <div class="input-group input-group-lg sepH_a">
                        <span class="input-group-addon"><span class="icon_profile"></span></span>
                        <input type="text" class="form-control" placeholder="Username" name="username">
                    </div>
                    <div class="input-group input-group-lg">
                        <span class="input-group-addon"><span class="icon_key_alt"></span></span>
                        <input type="password" class="form-control" placeholder="Password" name="password">
                    </div>

                    <div>
                        <a id="errorMsg" href="javascript:void(0)" style="color: red">${errorMsg}</a>
                    </div>

                    <div class="sepH_c text-right">
                        <a href="javascript:void(0)" class="small">Forgot password?</a>
                    </div>
                    <div class="form-group sepH_c">
                        <a href="javascript:doucment:loginFrom.submit()" class="btn btn-lg btn-primary btn-block">Log in</a>
                    </div>
                </form>
            </div>
            <div class="form_wrapper animated-short" id="register_form" style="display:none">
                <h3 class="sepH_c"><span>Register</span> \ <a href="javascript:void(0)" class="form-switch" data-switch-form="login_form">Login</a></h3>
                <form name = "registerForm" action="${pageContext.request.contextPath}/userRegister" method="post">
                    <div class="input-group input-group-lg sepH_a">
                        <span class="input-group-addon"><span class="icon_profile"></span></span>
                        <input type="text" class="form-control" placeholder="Username" name="username">
                    </div>
                    <div class="input-group input-group-lg sepH_a">
                        <span class="input-group-addon"><span class="icon_key_alt"></span></span>
                        <input type="password" class="form-control" placeholder="Password" name="password">
                    </div>
                    <div class="input-group input-group-lg sepH_c">
                        <span class="input-group-addon"><span class="icon_mail_alt"></span></span>
                        <input type="email" class="form-control" placeholder="Email" name="email">
                    </div>
                    <div class="form-group sepH_c">
                        <a href="javascript:doucment:registerForm.submit()" class="btn btn-lg btn-success btn-block">Register</a>
                    </div>
                </form>
            </div>
        </div>

        <script>
            $(function () {
                $(‘.form-switch‘).on(‘click‘, function (e) {
                    e.preventDefault();

                    var $switchTo = $(this).data(‘switchForm‘),
                        $thisForm = $(this).closest(‘.form_wrapper‘);

                    $(‘.form_wrapper‘).removeClass(‘fadeInUpBig‘);
                    $thisForm.addClass(‘fadeOutDownBig‘);

                    setTimeout(function () {
                        $thisForm.removeClass(‘fadeOutDownBig‘).hide();
                        $(‘#‘ + $switchTo).show().addClass(‘fadeInUpBig‘);
                    }, 300);

                });
            });
        </script>
    </body>
</html>

login_page.jsp

原文地址:https://www.cnblogs.com/1138720556Gary/p/12003221.html

时间: 2024-08-08 15:38:15

JavaWeb_(Spring框架)用户登陆Spring整合到Servlet中的相关文章

【spring框架】(一)spring简介

Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架. 本文先从框架底层模型的角度描述该框架的功能,然后介绍:Spring 面向切面编程(AOP)和控制反转 (IOC) 容器. Spring 框架的 7 个模块 组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现. 每个模块的功能如下 1.核心容器:核心容器提供 Spring

Spring框架讲解,Spring Boot 学习指南

在过去两三年的 Spring 生态圈,最让人兴奋的莫过于 Spring Boot 框架.Spring Boot 应用本质上就是一个基于 Spring 框架的应用,它是 Spring 对"约定优先于配置"理念的最佳实践产物,它能够帮助开发者更快速高效地构建基于 Spring 生态圈的应用. 那 Spring Boot 有何魔法?自动配置.起步依赖.Actuator.命令行界面(CLI) 是Spring Boot 最重要的 4 大核心特性,本文将为你打开 Spring Boot 的大门,重

Spring框架学习02——Spring IOC 详解

1.Spring IOC的基本概念 IOC(Inverse of Control)反转控制的概念,就是将原本在程序中手动创建对象的控制权,交由Spring框架管理.当某个Java对象(调用者)需要调用另一个Java对象(被调用者)时,在传统编程模式下,调用者通常会采用“new 被调用者”的代码方式来创建对象.这种方式会增加调用者与被调用者之间的耦合性,不利于后期代码的升级与维护.当Spring框架出现后,对象的实例不再由调用者来创建,而是由Spring容器来创建.Spring容器会负责控制程序之

Spring框架3:spring的依赖注入

本系列笔记均是对b站教程https://www.bilibili.com/video/av47952931 的学习笔记,非本人原创 spring的依赖注入(DI) 什么是依赖注入: 作者:Angry Bugs 链接:https://www.zhihu.com/question/32108444/answer/581948457 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 看了几个高赞答案,感觉说得还是太啰嗦了.依赖注入听起来好像很复杂,但是实际上炒鸡简单,一

Spring框架——day03springMVC与Spring整合

一,springMVC与Spring整合 SpringMVC本就是Spring的一部分,因此两个框架并不需要整合,但是因为springmvc属于web层,所以我们希望将web层的配置单独拿出来. 1.创建工程并配置必要的依赖 2.在resources中创建三个配置spring文件: spring-web.xml spring-service.xml spring-dao.xml 3.在web.xml中配置springmvc的前端控制器.spring的监听器.字符集过滤器 <filter> &l

《Java Spring框架》通过Idea 整合Spring和Mybatis

1. Jar包下载 百度云下载:链接: https://pan.baidu.com/s/1sVUovsBfj8NWdthGIbyqGA 提取码: 8v3u 复制这段内容后打开百度网盘手机App,操作更方便哦 2 通过IDEA整合 第一步:新增项目 第二步:不通过Gradle也可以的,选好java 和 web 点击下一步. 第三步:取个名字 第四步:设置Gradle 和 JDK版本,当然没有gradle也不影响的. 第五步:新增lib文件,用于存放下载的jar包,也可以通过Gradle下载. 第六

JavaEE Spring 框架实战视频教程 Spring深度解析教程下载

02.组件注册[email protected]&@Bean给容器中注册组件.avi 04.组件注册-自定义TypeFilter指定过滤规则.avi    06.组件注册[email protected]懒加载.avi    08.组件注册[email protected]给容器中快速导入一个组件.avi    10.组件注册[email protected]使用ImportBeanDefinitionRegistrar.avi    12.生命周期[email protected]指定初始化和

Spring框架系列(七)--Spring常用注解

Spring部分: 1.声明bean的注解: @Component:组件,没有明确的角色 @Service:在业务逻辑层使用(service层) @Repository:在数据访问层使用(dao层) @Controller:在展现层使用,控制器的声明(Controller) 2.注入bean的注解: @Autowired:由Spring提供,按类型注入,如果一个接口有多个实现,需要和@Qualifier配合使用 @Inject:由JSR-330提供 @Resource:由JSR-250提供,按名

将linux的某一用户登陆后限定在家目录中

使用root登录,执行  chmod  o-r  /home      这条命令的意思是不让其他用户对home有读取权限,但是是可以进入的,当执行ls命令时,会提示权限拒绝.比如,你按照上述的方法做了,然后使用aaa用户登录,当aaa用户退出home之后,再执行ls  /home就会提示权限不够,但是aaa用户却可以使用cd  /home/aaa进入到自己的目录中.下面是操作过程,首先使用root用户登录,修改/home的权限[[email protected] ~] chmod o-r /ho