老师,不能跳转页面

老师,不能跳转页面

http://img1.sycdn.imooc.com//climg/6066cf620967462c15970877.jpg

点击OK,依旧会弹出这个对话框。

package com.imooc.icake.controller;

import com.imooc.icake.biz.AccountBiz;
import com.imooc.icake.biz.impl.AccountBizImplement;
import com.imooc.icake.entity.Account;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class DefaultController {
//调用业务层
   AccountBiz accountBiz = new AccountBizImplement();
//    /tologin.do
   public void toLogin(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.getRequestDispatcher("/WEB-INF/pages/admin/login.jsp").forward(request,response);
}

//    /login.do
   public void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("account");
String password =request.getParameter("password");
Account account=accountBiz.login(name,password);
//        如果登录失败了
       if (account == null) {
response.sendRedirect("toLogin.do");
} else {
request.getSession().setAttribute("ACCOUNT", account);
response.sendRedirect("/admin/cake/list.do");
}

}
//    /quit.do
public void quit(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

request.getSession().setAttribute("ACCOUNT", null);
response.sendRedirect("toLogin.do");
}

}


package com.imooc.icake.global;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class LoginFilter implements Filter {
@Override
   public void init(FilterConfig filterConfig) throws ServletException {

}

@Override
   public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
Object object = request.getSession().getAttribute("ACCOUNT");
if (object == null) {
response.sendRedirect("toLogin.do");
}
filterChain.doFilter(request,response);
}

@Override
   public void destroy() {

}
}

还有就是为什么toLogin方法没有传参数使用转发。

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,1、根据提示,URL不能打开。请检查这个URL是否正确,如下图所示:所以建议同学查看路径是否正确。

http://img1.sycdn.imooc.com//climg/6066ddd50945ae6710300306.jpg

2、没有参数也是可以使用请求转发的,如果只是页面跳转,使用转发和重定向都可以。具体使用场景如下:

    1)如果是访问本项目外的页面,必须使用重定向。

    2)如果在跳转时,想要携带request作用域中的数据一起跳转,必须使用转发。另外如果访问的页面在WEB-INF目录下,也必须有转发。如下所示:

http://img1.sycdn.imooc.com//climg/6066de2f09d3158307530237.jpg

注:因为WEB-INF是安全目录,不可以直接访问,直接访问会出现404异常

祝学习愉快!

  • 复java_n 提问者 #1

    http://img1.sycdn.imooc.com//climg/6066e2c509b611bf15330662.jpg

    我测试出来就是这个路径,我是在设置 了登录页面的登录过滤器后无法进入的

    java.lang.NoSuchMethodException: com.imooc.icake.controller.CatalogController.toLogin(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)

    at java.lang.Class.getMethod(Class.java:1786)

    at com.imooc.icake.global.GlobalController.service(GlobalController.java:56)

    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:52)

    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

    at com.imooc.icake.global.LoginFilter.doFilter(LoginFilter.java:22)

    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

    at com.imooc.icake.global.EncodingFilter.doFilter(EncodingFilter.java:24)

    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)

    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)

    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543)

    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)

    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)

    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)

    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)

    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)

    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:615)

    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)

    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:818)

    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1626)

    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)

    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

    at java.lang.Thread.run(Thread.java:745)

    java.lang.NoSuchMethodException

    这是报的错

    2021-04-02 17:26:07
  • 复java_n 提问者 #2

    如果代码正确就会自动跳转到/admin/toLogin.do上的对吧?

    2021-04-02 17:33:08
  • 好帮手慕小尤 回复 提问者 复java_n #3

    同学你好,1、java.lang.NoSuchMethodException意思是没有找到该方法。建议同学根据提示查看方法是否存在。或查看访问的路径对不对。

    2、同学可以查看GlobalController类的56行,查看是否存在问题。

    http://img1.sycdn.imooc.com//climg/6066ea0a09c2ff3207360248.jpg
    注:可以与源码进行对比。

    3、是的,代码正确时并在未登陆的情况下会自动跳转到/admin/toLogin.do

    注:同学不要在idea中进行访问,同学可以直接在浏览器中访问试一下。

    祝学习愉快!

    2021-04-02 18:59:25
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师