Показывать сообщение об ошибке при нажатии URL-адреса метода публикации прямо в браузере - PullRequest
0 голосов
/ 03 марта 2019

Я хочу показать сообщение об ошибке при нажатии URL-адреса метода post напрямую с помощью java springboot, поэтому я использовал исключение try catch, но оно не работает, я получаю сообщение об ошибке, о котором упоминал в этом вопросе, помощь или предложение приветствуются.

Мне просто нужно, когда мы нажимаем на localhost: 8080 / LoginProcess, url Мне нужно показать страницу ошибки error404.

Метод контроллера

@PostMapping("/LoginProcess")
    public String LoginProcess(@ModelAttribute("customer") Customer thecustomer,HttpSession session) {

        try {

            Customer result = customerservice.Login_service(thecustomer.getUserName(),thecustomer.getPassword());

            if(result==null)
            {
                return "login";
            }
            else if(result.getRole().equals("1"))
            {
                session.setAttribute("l_uname",result.getUserName() );
                session.setAttribute("l_pwd",result.getPassword() );
                return "admindash";
            }
            else
            {
                session.setAttribute("l_uname",result.getUserName() );
                session.setAttribute("l_pwd",result.getPassword() );
                return "customerdash";
            }

        }catch(Exception e) {
            return "err404";
        }

    }

Сообщение об ошибке

This application has no explicit mapping for /error, so you are seeing this as a fallback.

Sun Mar 03 16:18:46 IST 2019
There was an unexpected error (type=Method Not Allowed, status=405).
Request method 'GET' not supported
org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'GET' not supported
    at org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping.handleNoMatch(RequestMappingInfoHandlerMapping.java:200)
    at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.lookupHandlerMethod(AbstractHandlerMethodMapping.java:422)
    at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:368)
    at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:65)
    at org.springframework.web.servlet.handler.AbstractHandlerMapping.getHandler(AbstractHandlerMapping.java:401)
    at org.springframework.web.servlet.DispatcherServlet.getHandler(DispatcherServlet.java:1231)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1014)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

Ответы [ 5 ]

0 голосов
/ 03 марта 2019

попробуй @ControllerAdvice и ExceptionHandler

@ControllerAdvice
public class DemoControllerAdvice {

    @ExceptionHandler(HttpRequestMethodNotSupportedException.class)
    public ResponseEntity<String> handleIOException(HttpRequestMethodNotSupportedException ex) {
        // prepare responseEntity
        return ResponseEntity.notFound().build();
    }

}
0 голосов
/ 03 марта 2019

Я получил разрешение, создав такой же дубликат метода с @GetMapping, и он работает отлично.теперь он перенаправляет на мою страницу ошибки.спасибо Яли, который дал мне идею через комментарии.

@GetMapping("/LoginProcess")
    public String LoginProcess() {

        return "err404";
    }
0 голосов
/ 03 марта 2019

Вы не можете отправить http-запрос из браузера, поэтому я предлагаю вам использовать инструменты post man для тестирования.

0 голосов
/ 03 марта 2019

Я не уверен, предоставил ли Spring какую-либо реализацию для него.Но вы можете справиться с этим, написав свой собственный intercepter.intercepter будет выполняться до попадания в контроллер, чтобы вы могли проверить методы http, перенаправьте его на ошибку jsp

0 голосов
/ 03 марта 2019

попробуйте использовать, @PostMapping(value = "/loginProcess") или попробуйте использовать RequestMapping с методом @RequestMapping(value = "/loginProcess", method = RequestMethod.POST)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...