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. 一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(三)用户接口层之RTSP命令

    截至版本1.2.3,myRtspClient函数库共支持以下6个RTSP命令: (1)OPTIONS (2)DESCRIBE (3)SETUP (4)PLAY (5)PAUSE (6)TEARDOWN ...

  2. 【Ubuntu 16】安装deb

    deb是debian linux的安装格式,跟red hat的rpm非常相似,最基本的安装命令是:dpkg -i file.deb  dpkg 是Debian Package的简写,是为Debian ...

  3. 论林耐斯-Linux系统的重要性

    Linux--LinNaiSi系统的重要性... ===================================================== 飞机的控制系统.银行的系统.手机的系统我们 ...

  4. 深入了解mysql数据传输编码原理

    一.基本概念(这里引用http://www.laruence.com/2008/01/05/12.html) 1. 给定一系列字符,对每个字符赋予一个数值,用数值来代表对应的字符,这一数值就是字符的编 ...

  5. 将指定目录中的txt文件转化成excel文件

    #!/usr/bin/env python#coding:utf-8import reimport osimport globimport xlwtimport sysdir=r"F:\te ...

  6. C#最佳工具集合:IDE、分析、自动化工具等

    C#是企业中广泛使用的编程语言,特别是那些依赖微软的程序语言.如果您使用C#构建应用程序,则最有可能使用Visual Studio,并且已经寻找了一些扩展来对您的开发进行管理.但是,这个工具列表可能会 ...

  7. webStrom支持Vue

    找到webstorm-->preferences-->fileTypes-->html-->添加+-->*.vue

  8. grunt之filerev、usemin

    窃以为这两个插件是比较有用的,filerev是给js.css进行编码重命名,usemin修改html中被重命名的js.css文件的引用.另外说明下之前将concat.cssmin.uglify放在一篇 ...

  9. 阿里云Prismplayer-Web播放器的使用

    Prismplayer是一套在线视频播放技术方案,同时支持Flash和Html5两种播放技术,可对播放器进行功能配置和皮肤定制.其在线使用文档地址为:https://help.aliyun.com/d ...

  10. 自制STP配置实验

    本图使用Gns模拟器 实验需求: 1.要求利用vtp实现vlan同步设置 2.要求vtp server实现备份冗余 3.创建vlan 1~10要求MLSW1 是奇数vlan主根 MLSW2 是偶数vl ...