精华内容
下载资源
问答
  • 在Spring框架中,有很多处理异常的方法(特别是404错误).这是一个documentation link.>首先,您仍然可以在web.xml中使用错误页面标签,并自定义错误页面.这是一个example.>其次,您可以为所有控制器使用一个@...

    在Spring框架中,有很多处理异常的方法(特别是404错误).这是一个

    documentation link.

    >首先,您仍然可以在web.xml中使用错误页面标签,并自定义错误页面.这是一个example.

    >其次,您可以为所有控制器使用一个@ExceptionHandler,如下所示:

    @ControllerAdvice

    public class ControllerAdvisor {

    @ExceptionHandler(NoHandlerFoundException.class)

    public String handle(Exception ex) {

    return "404";//this is view name

    }

    }

    为了使这个工作,在web.xml中为DispatcherServlet设置throwExceptionIfNoHandlerFound属性为true:

    throwExceptionIfNoHandlerFound

    true

    您还可以将一些对象传递给错误视图,请参阅javadoc.

    展开全文
  • 我想在Rails中“伪造” 404页面。 在PHP中,我只发送带有错误代码的标头,如下所示:header("HTTP/1.0 404 Not Found");Rails如何做到这一点?#1楼由于错误处理程序已移至中间件,因此所选答案在Rails 3.1+中不起...

    我想在Rails中“伪造” 404页面。 在PHP中,我只发送带有错误代码的标头,如下所示:

    header("HTTP/1.0 404 Not Found");

    Rails如何做到这一点?

    #1楼

    由于错误处理程序已移至中间件,因此所选答案在Rails 3.1+中不起作用(请参阅github issue )。

    这是我很满意的解决方案。

    在ApplicationController :

    unless Rails.application.config.consider_all_requests_local

    rescue_from Exception, with: :handle_exception

    end

    def not_found

    raise ActionController::RoutingError.new('Not Found')

    end

    def handle_exception(exception=nil)

    if exception

    logger = Logger.new(STDOUT)

    logger.debug "Exception Message: #{exception.message} \n"

    logger.debug "Exception Class: #{exception.class} \n"

    logger.debug "Exception Backtrace: \n"

    logger.debug exception.backtrace.join("\n")

    if [ActionController::RoutingError, ActionController::UnknownController, ActionController::UnknownAction].include?(exception.class)

    return render_404

    else

    return render_500

    end

    end

    end

    def render_404

    respond_to do |format|

    format.html { render template: 'errors/not_found', layout: 'layouts/application', status: 404 }

    format.all { render nothing: true, status: 404 }

    end

    end

    def render_500

    respond_to do |format|

    format.html { render template: 'errors/internal_server_error', layout: 'layouts/application', status: 500 }

    format.all { render nothing: true, status: 500}

    end

    end

    并在application.rb :

    config.after_initialize do |app|

    app.routes.append{ match '*a', :to => 'application#not_found' } unless config.consider_all_requests_local

    end

    在我的资源(显示,编辑,更新,删除)中:

    @resource = Resource.find(params[:id]) or not_found

    当然可以改善这一点,但是至少在不覆盖Rails核心功能的情况下,我对not_found和internal_error拥有不同的看法。

    #2楼

    这些将帮助您...

    应用控制器

    class ApplicationController < ActionController::Base

    protect_from_forgery

    unless Rails.application.config.consider_all_requests_local

    rescue_from ActionController::RoutingError, ActionController::UnknownController, ::AbstractController::ActionNotFound, ActiveRecord::RecordNotFound, with: lambda { |exception| render_error 404, exception }

    end

    private

    def render_error(status, exception)

    Rails.logger.error status.to_s + " " + exception.message.to_s

    Rails.logger.error exception.backtrace.join("\n")

    respond_to do |format|

    format.html { render template: "errors/error_#{status}",status: status }

    format.all { render nothing: true, status: status }

    end

    end

    end

    错误控制器

    class ErrorsController < ApplicationController

    def error_404

    @not_found_path = params[:not_found]

    end

    end

    views / errors / error_404.html.haml

    .site

    .services-page

    .error-template

    %h1

    Oops!

    %h2

    404 Not Found

    .error-details

    Sorry, an error has occured, Requested page not found!

    You tried to access '#{@not_found_path}', which is not a valid page.

    .error-actions

    %a.button_simple_orange.btn.btn-primary.btn-lg{href: root_path}

    %span.glyphicon.glyphicon-home

    Take Me Home

    #3楼

    要测试错误处理,您可以执行以下操作:

    feature ErrorHandling do

    before do

    Rails.application.config.consider_all_requests_local = false

    Rails.application.config.action_dispatch.show_exceptions = true

    end

    scenario 'renders not_found template' do

    visit '/blah'

    expect(page).to have_content "The page you were looking for doesn't exist."

    end

    end

    #4楼

    HTTP 404状态

    要返回404标头,只需对render方法使用:status选项。

    def action

    # here the code

    render :status => 404

    end

    如果要呈现标准404页面,则可以使用方法提取功能。

    def render_404

    respond_to do |format|

    format.html { render :file => "#{Rails.root}/public/404", :layout => false, :status => :not_found }

    format.xml { head :not_found }

    format.any { head :not_found }

    end

    end

    并在行动中称呼它

    def action

    # here the code

    render_404

    end

    如果要使操作呈现错误页面并停止,只需使用return语句即可。

    def action

    render_404 and return if params[:something].blank?

    # here the code that will never be executed

    end

    ActiveRecord和HTTP 404

    还请记住,Rails会挽救一些ActiveRecord错误,例如显示404错误页面的ActiveRecord::RecordNotFound 。

    这意味着您无需自己挽救该动作

    def show

    user = User.find(params[:id])

    end

    当用户不存在时, User.find引发ActiveRecord::RecordNotFound 。 这是一个非常强大的功能。 看下面的代码

    def show

    user = User.find_by_email(params[:email]) or raise("not found")

    # ...

    end

    您可以通过将检查委托给Rails来简化。 只需使用爆炸版本。

    def show

    user = User.find_by_email!(params[:email])

    # ...

    end

    #5楼

    您还可以使用渲染文件:

    render file: "#{Rails.root}/public/404.html", layout: false, status: 404

    您可以选择是否使用布局的位置。

    另一种选择是使用“异常”来控制它:

    raise ActiveRecord::RecordNotFound, "Record not found."

    展开全文
  • 我们知道,在web.xml中重定向404页面是很简单的事儿,只需要如下几行代码: 2 <error-code>404 3 <location>/WEB-INF/errors/404.jsp 4 但是在基于JavaConfig的项目中,是没有web.xml文件的,那么应该如何重定向40

    我们知道,在web.xml中重定向404页面是很简单的事儿,只需要如下几行代码:

    <error-page>
    2     <error-code>404</error-code>
    3     <location>/WEB-INF/errors/404.jsp</location>
    4   </error-page>

    但是在基于JavaConfig的项目中,是没有web.xml文件的,那么应该如何重定向404等状态码页面呢?要完成这个需要两个步骤:

    1. 在初始化类WebAppInitializer中将初始化属性throwExceptionIfNoHandlerFo‌​und设为true:
    public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
        //...
    
        @Override
        protected void customizeRegistration(ServletRegistration.Dynamic registration) {
        //设置参数
        registration.setInitParameter("throwExceptionIfNoHandlerFo‌​und","true");
        }
    }
    

    2.设置异常拦截方法:

    @ExceptionHandler(NoHandlerFoundException.class)
        public String handle(Exception ex){
            return "My404";//404是视图名
        }

    这样就可以在遇到404错误时返回指定的页面.参考信息https://stackoverflow.com/questions/23574869/404-error-redirect-in-spring-with-java-config

    展开全文
  • 当我们在写项目中运到404、500等错误时,页面上会显示如下错误信息: 那么问题来了,我们可不可以自己定制404错误页面呢 答案当然是Of Course的啦 步骤如下 (1)首先添加 WebMvcConfig 配置类 import org....

    问题

    当我们在写项目中运到404、500等错误时,页面上会显示如下错误信息:
    这里写图片描述

    那么问题来了,我们可不可以自己定制404错误页面呢

    答案当然是Of Course的啦

    步骤如下

    (1)首先添加 WebMvcConfig 配置类

    import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer;
    import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer;
    import org.springframework.boot.web.servlet.ErrorPage;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.http.HttpStatus;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
    
    @Configuration
    public class WebMvcConfig extends WebMvcConfigurerAdapter{
    
        @Bean
        public EmbeddedServletContainerCustomizer containerCustomizer(){
    
            return new EmbeddedServletContainerCustomizer() {
                @Override
                public void customize(ConfigurableEmbeddedServletContainer container) {
                    ErrorPage error401Page = new ErrorPage(HttpStatus.UNAUTHORIZED, "/401.html");
                    ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/404.html");
                    ErrorPage error500Page = new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/500.html");
    
                    container.addErrorPages(error401Page,error404Page,error500Page);
                }
            };
        }
    }
    

    (2)然后将我们制作的404.html、500.html放在static目录下就OK了。

    此时我们再启动项目,随便输入一个访问地址就会发现重定向到了我们的404.html
    这里写图片描述

    参考信息来源:https://stackoverflow.com/questions/23574869/404-error-redirect-in-spring-with-java-config

    展开全文
  • 不存在的链接重定向到自己设计的404错误页面 在web.xml文件加入: 403 /error/403 404 /WEB-INF/error/404.jsp 自己设计的404错误页面: <%@ page language="java" contentType="text/html; cha
  • 这里的安全配置(SecurityConfig.java)@Configuration@EnableWebSecurity@EnableGlobalMethodSecurity(prePostEnabled=true)public class SecurityConfig extends WebSecurityConfigurerAdapter {@Autowiredprivate ...
  • 关于重定向问题

    2009-10-03 14:34:21
    查询有几种,我则选择了jsp的404错误页面实现导航。 可能效率会有问题,但是先这么做吧。 具体如下: &lt;%@ page language="java" import="java.util.*" pageEncoding="UTF-8"...
  • 最近开发的java web项目(struts+freemarker)...一、修改web.xml,重定向404页面 web.xml的功能很强大,如果页面返回错误码,如404,500,可以将页面重定向新的页面,如下配置,将所有404页面重定向到自定义的404.html
  • tomcat 访问的重定向问题

    千次阅读 2015-09-01 10:14:50
    分类: java2013-01-26 22:53 6753人阅读 评论(1) 收藏 举报 症状: tomcat在eclipse里面能正常启动,而在浏览器中访问http://localhost:8080/不能访问,且报404错误。同时其他项目页面也不能访问。 ...
  • 第一, 需要注意Spring MVC 和...而REST却不行,因为在spring Rest中, 当用户访问了一个不存在的链接时, Spring 默认会将页面重定向到 **/error** 上, 而不会抛出异常。 处理方法是,在application.properties文件中
  • 302错误表示被请求的资源暂时转移(Movedtemporatily),然后会给出一个转移后的URL,而浏览器在处理服务器返回的302错误时,原则上会重新建立一个TCP连接,然后再取重定向后的URL的页面;但是如果页面存在于缓存中,...
  • Java Web学习笔记

    2019-09-16 19:32:29
    300/301:页面重定向(跳转); 500:服务器内部错误;(代码有误) 其他编码:需要积累; 2.jsp:在html中嵌套的java代码; 3.在项目/WEB-INF/web.xml中设置 默认的 初始页面: <welcome-fil...
  • Java Web学习日记01

    2020-01-26 19:53:46
    页面重定向(跳转) 404 资源不存在 403 权限不足(如果访问a目录,当a目录设置 不可见) 500 服务器内部错误(代码有误) 其他编码 积累 (二)webapps目录: JspProject文件: (1)web.xml文件 (2)lib ...
  • 常见状态码200 正常300/301 页面重定向403 权限不足404 资源不存在500 服务器内部错误JSP解析过程第一次访问时将JSP翻译为Java的Servlet再编译成class文件,后续访问只要代码没有变动,都可以直接读取class文件...
  • [java面试]之网络

    2020-03-30 16:26:56
    301和302都是页面重定向。 301请求的页面已经被永久移动到新的位置,服务器返回此响应(作为GET或者HEAD请求的响应)时会自动将请求转到新的位置。 302服务器目前正从不同的位置页面响应请求,但请求者应继续使用...
  • 对于tomcat的中间件下,常用修复方式如下:找到配置文件web.xml,修改内容如下:配置一个统一的静态页面,将400、403、404、500等常见报错重定向到该静态页面,而不是抛出异常(报错信息导致代码信息泄漏)。java.lang....
  • Java语言基础下载

    热门讨论 2010-09-07 21:56:38
    转发和重定向标记 668 HTML标记 669 显示错误信息的标记 673 其他HTML标记 673 模板标记 673 内容总结 676 独立实践 676 第三十四章:Hibernate基础 677 学习目标 677 Hibernate简介 678 建立简单的Hibernate应用 ...
  • 200: 程序正常 404: 访问资源不存在(ex:页面路径错误找不到文件...) 500: 程序出错(ex:后台java程序出错) 302:重定向 304:请求缓存 验证码:OCR能识别清晰文字 ...
  • JavaServer Faces 2.0完全参考手册》对所有jsf功能都进行了解释,包括请求处理生命周期、托管bean、页面导航、组件开发、ajax、验证器、国际化和安全。贯穿全书的专家组意见提供了关于jsf设计的内部信息。 推荐...
  • Java开发技术大全 电子版 第1篇Java基础知识入门. 第1章Java的开发运行环境2 1.1Java的运行环境与虚拟机2 1.2Java的开发环境4 1.2.1JDK的安装4 1.2.2如何设置系统环境变量6 1.2.3编译命令的使用8 1.2.4解释...
  • 3.10.3 重定向后出现404错误 3.11 精彩回顾 第4章 体验面向对象 1IavaBean技术 4.1 本章学习任务 4.1.1 本章知识体系 4.1.2 实例开发任务 4.2 JavaBean简介 4.2.1 JavaBean产生的背景 4.2.2 使用JavaBean的意义 ...
  • 3.10.3 重定向后出现404错误 3.11 精彩回顾 第4章 体验面向对象 1IavaBean技术 4.1 本章学习任务 4.1.1 本章知识体系 4.1.2 实例开发任务 4.2 JavaBean简介 4.2.1 JavaBean产生的背景 4.2.2 使用JavaBean的意义 ...
  • Java学习笔记-个人整理的

    热门讨论 2012-12-19 09:57:07
    {1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{subsection.1.3.1} {1.4}数据类型}{23}{section.1.4} {...
  • 返回这个地址 404 ![图片说明](https://img-ask.csdn.net/upload/201510/09/1444404164_27274.png) ``` xmlns:xsi=...
  • JavaWeb学习简记

    2020-04-15 12:31:04
    300/301: 页面重定向 404:资源不存在 403:权限不够 500:服务器内部错误 代码写错了 JSP 建立一个webapp的所需条件 必须有web-inf lib 第三方依赖库 JSp是html嵌套java代码 配置虚拟路径 将web项目配置到...
  • 实例166 在Servlet中实现页面重定向 实例167 在Servlet中处理表单提交的数据 实例168 在Servlet中向客户端写Cookie信息 实例169 在Servlet中将JavaBean对象传递到JSP页 实例170 在Servlet中获取Web路径和文件...

空空如也

空空如也

1 2 3
收藏数 51
精华内容 20
关键字:

java重定向404页面

java 订阅