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. 利用 :before :after伪类实现鼠标悬浮动画效果

    1.最近在逛网站的时候,想找一下喜欢的鼠标悬浮效果,避免广告的嫌疑,直接放图了: 2.在实现的时候,如果在直接使用鼠标hover ,transform,进行过渡,不能达到想要的效果,因为同时只能触发一 ...

  2. 阿里云服务器(Windows)如何下载文件

    背景:公司只有我一个技术,在我之前还有一个老技术,属于兼职状态,为了尽快熟悉公司网站及app项目情况,我联系了老技术,请他尽快将代码发给我,他说代码文件过大,问我能不能连上服务器下载.百度了很多,都不 ...

  3. java创建泛型数组

    java中创建泛型数组并不是不可能,创建泛型数组通过反射,给构造函数传递两个参数,一个类型标记,一个数组大小.' 简单Demo如下: import java.lang.reflect.Array; / ...

  4. spring boot / cloud (八) 使用RestTemplate来构建远程调用服务

    spring boot / cloud (八) 使用RestTemplate来构建远程调用服务 前言 上周因家里突发急事,请假一周,故博客没有正常更新 RestTemplate介绍: RestTemp ...

  5. python之VSCode安装

    [之前发布到本人的51cto博客,现转过来] 1.安装python3.5(3.6版本亲测无法实现命令补全功能) 2.安装VSCode(我的版本:VSCode-win32-1.7.2) 3.安装Pyth ...

  6. HTTP手记

    ---------------------tcp/ip模型和osi模型---------------------tcp/ip协议模型   osi模型应用层   应用层 表示层 会话层传输层   传输层 ...

  7. Apache Camel之FTP组件学习

    写在最前面 哎,最近提了离职,手头的活也基本上清理的差不多了.想着这个把月可以舒服的晃悠晃悠的离开,但是运维的小伙伴总是不架势,走之前还是提了个新需求. 先说下需求吧,我们的系统概括的讲就是一个接口系 ...

  8. Android基础知识大全(精品)

    [1].ProgressBar   <ProgressBar android:id="@+id/progress_bar" android:layout_width=&quo ...

  9. linux 增量备份命令Rsync 使用详解

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt320 Rsync的命令格式可以为以下六种: rsync [OPTION].. ...

  10. Kafka Streams 剖析

    1.概述 Kafka Streams 是一个用来处理流式数据的库,属于Java类库,它并不是一个流处理框架,和Storm,Spark Streaming这类流处理框架是明显不一样的.那这样一个库是做什 ...