1,一个简单的登录

  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>登录页面</title>
</head>
<body>
    <!--  登录表单 -->
    <form action="user/login" method="post">
        name:<input type="text" name="name"><br/>
        password:<input type="password" name="password"><br/>
        <input type="submit" name="submit">
    </form>
</body>
</html>

  提交到UserAction的login方法

    @RequestMapping(value="login",method=RequestMethod.POST)
    //如何获取request,response,session?
    //直接在方法参数中声明即可使用
    public String login(String name,String password,HttpSession session){

        if(!users.containsKey(name)){
            throw new UserException("用户名不存在");
        }
        User u=users.get(name);
        if(!u.getPassword().equals(password)){
            throw new UserException("密码不正确");
        }

        session.setAttribute("loginUser", u);
        return "redirect:/user/users";
    }
    

  其中UserException是我们的自定义异常类,如下

package com.yangw.springmvc.exception;

public class UserException extends RuntimeException {

    private static final long serialVersionUID = 1L;

    public UserException() {
        super();
    }

    public UserException(String message, Throwable cause) {
        super(message, cause);
    }

    public UserException(String message) {
        super(message);
    }

    public UserException(Throwable cause) {
        super(cause);
    }
}

  此时的登录,输入错误的用户名或者密码时,直接显示异常信息,显然是不合理的,我们需要处理

异常的处理方式-(第一种 局部异常处理模式)

/**
     * 局部异常处理模式,仅仅能处理这个控制器中的异常)
     */
    //value是一个数组
    @ExceptionHandler(value={UserException.class})
    public String handlerException(UserException e,HttpServletRequest req){
        //将异常对象存入Request中
        req.setAttribute("e", e);
        return "error";
    }

  然后在error.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>错误信息</title>
</head>
<body>
 <h3>${e.message}</h3><br/>
</body>
</html>

异常的处理方式-(第2种 全局异常处理模式),主要是在主配置文件中完成的

  为 hello-servlet.xml增加异常处理配置

<!-- 全局异常处理-->
    <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <property name="exceptionMappings">
            <props>
                <!-- key 是异常类 prop元素的值是异常页面-->
                <prop key="com.yangw.springmvc.exception.UserException">error</prop>
            </props>
        </property>
    </bean>

  此时,需要把局部异常处理方法删掉,负责全局的不起作用,此外error.jsp页面需要稍微改动,它使用的是exception对象

<%@ 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>错误信息</title>
</head>
<body>
 <h3>${exception.message}</h3><br/>
</body>
</html>

  我们为list.jsp页面加入一个样式main.css文件,它属于一个静态文件,该如何处理呢?

  /resources/css/main.css文件内容:

* {
    font-size: 14px;
    color: red;
}

  在springmvc主配置文件中配置如下一行信息

   <!-- 静态文件,比如css文件等的处理方式-->
    <!-- 将静态文件指定到某个特殊的文件夹中统一处理 -->
    <!-- ** 表示所有文件包括子文件夹中的文件-->
    <mvc:resources location="/resources/" mapping="/resources/**"/>

  然后在list.jsp中引入这个css文件

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!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>所有用户</title>

<!-- 引入css文件 -->
<link rel="stylesheet" href="<%=request.getContextPath() %>/resources/css/main.css" type="text/css">

</head>
<body>
    <h2> 当前登录用户--->${loginUser.name} </h2>
 <a href="add">添加用户</a><br/>
 <c:forEach items="${users }" var="um" >
     <!-- 这里的um是一个个的 键值对 -->
     ${um.key}---<a href="${um.value.name }">${um.value.name }</a>---${um.value.password }----${um.value.age } ----

     <a href="${um.value.name }/update">更新</a>---
     <a href="${um.value.name }/delete">删除</a><br/>
 </c:forEach>
</body>
</html>

springmvc03-异常处理-静态文件的更多相关文章

  1. asp.net core 教程(七)-异常处理、静态文件

    Asp.Net Core-异常处理 Asp.Net Core-异常处理 在这一章,我们将讨论异常和错误处理.当 ASP.NET Core应用程序中发生错误时,您可以以各种不同的方式来处理.让我们来看看 ...

  2. C#编译器优化那点事 c# 如果一个对象的值为null,那么它调用扩展方法时为甚么不报错 webAPI 控制器(Controller)太多怎么办? .NET MVC项目设置包含Areas中的页面为默认启动页 (五)Net Core使用静态文件 学习ASP.NET Core Razor 编程系列八——并发处理

    C#编译器优化那点事   使用C#编写程序,给最终用户的程序,是需要使用release配置的,而release配置和debug配置,有一个关键区别,就是release的编译器优化默认是启用的.优化代码 ...

  3. [Python] Django框架入门5——静态文件、中间件、上传图片和分页

    说明: 本文主要描述Django其他的内容,涉及静态文件处理.中间件.上传文件.分页等. 开发环境:win10.Python3.5.Django1.10. 一.静态文件处理 在Django项目的静态文 ...

  4. SpringBoot学习笔记(二):SpringBoot访问静态文件、捕获全局异常、集成Thymeleaf、集成JSP

    SpringBoot访问静态文件 什么是静态文件? 不需要通过web容器去得到的文件,直接通过路径就能得到的文件,比如项目的css,js,img等文件. 所有的资源文件都应该在src/main/res ...

  5. Django(十七):静态文件、中间件

    一.静态文件 参考:https://www.cnblogs.com/jiajiaba/p/10584329.html 参考:https://docs.djangoproject.com/zh-hans ...

  6. dango 常用 静态文件 中间件 admin管理 上传图片

    静态文件 项目中的CSS.图片.js都是静态文件.一般会将静态文件放到一个单独的目录中,以方便管理.在html页面中调用时,也需要指定静态文件的路径,Django中提供了一种解析的方式配置静态文件路径 ...

  7. ASP.NET Core应用针对静态文件请求的处理[5]: DefaultFilesMiddleware中间件如何显示默认页面

    DefaultFilesMiddleware中间件的目的在于将目标目录下的默认文件作为响应内容.我们知道,如果直接请求的就是这个默认文件,那么前面介绍的StaticFileMiddleware中间件会 ...

  8. ASP.NET Core应用针对静态文件请求的处理[4]: DirectoryBrowserMiddleware中间件如何呈现目录结构

    和StaticFileMiddleware中间件一样,DirectoryBrowserMiddleware中间本质上还是定义了一个请求地址与某个物理目录之间的映射关系,而目标目录体现为一个FilePr ...

  9. ASP.NET Core应用针对静态文件请求的处理[3]: StaticFileMiddleware中间件如何处理针对文件请求

    我们通过<以Web的形式发布静态文件>和<条件请求与区间请求>中的实例演示,以及上面针对条件请求和区间请求的介绍,从提供的功能和特性的角度对这个名为StaticFileMidd ...

随机推荐

  1. Clang之语法抽象语法树AST

    语法分析器的任务是确定某个单词流是否能够与源语言的语法适配,即设定一个称之为上下文无关语言(context-free language)的语言集合,语法分析器建立一颗与(词法分析出的)输入单词流对应的 ...

  2. mysql 数据库选定 创建 删除 变更

    use db_name select * from db_name.tbl_name 显示所有数据库 mysql> select schema_name from information_sch ...

  3. 【Linux】管理在线用户

    查看当前在线用户 [root@localhost ~]# who root pts/ -- : (111.34.103.23) 查看在线用户 [root@localhost ~]# w :: up d ...

  4. Spring mvc登录拦截器

    自己实现的第一个Spring mvc登录拦截器 题目要求:拒绝未登录用户进入系统,只要发现用户未登录,则将用户请求转发到/login.do要求用户登录 实现步骤: 1.在spring的配置文件中添加登 ...

  5. Centos 6.5 安装 python3.6.2、pip9.0.1、ipython6.1

    说明:由于Cenots 6.5 默认是安装的 python 2.6.6  要想同一台主机使用多个python版本,不能影响原来的版本,因为系统很多还依赖于python,比如 yum    python ...

  6. 【Java学习笔记之三十】详解Java单例(Singleton)模式

    概念: Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例.饿汉式单例.登记式单例. 单例模式有以下特点: 1.单例类只能有一个实例. 2.单例类必须自己创建 ...

  7. 【技术分享】手把手教你使用PowerShell内置的端口扫描器

    [技术分享]手把手教你使用PowerShell内置的端口扫描器 引言 想做端口扫描,NMAP是理想的选择,但是有时候NMAP并不可用.有的时候仅仅是想看一下某个端口是否开放.在这些情况下,PowerS ...

  8. 每次启动懂maven项目都必须关闭javaw.exe进程

    最近几天一致在搞配置问题,今天总于解决了.下面说问题: 我发现我每次配置完maven build的goals运行,总是会出现TOMCAT绑定接口问题,我做的方法就是不断地关掉JAVAw.exe进程.但 ...

  9. 关于sys.argv

    sys.argv[]用来获取命令行参数,sys.argv[0]表示代码本身的文件路径.比如在命令行输入‘python test.py -version',sys.argv[0]的值即为test.py, ...

  10. 常用Linux操作指令

    -------------------------------Linux目录------------------------------- /:根目录,一般根目录下只存放目录,在Linux下有且只有一 ...