启动后,只显示http://localhost:8080/

启动后,只显示http://localhost:8080/

public class GlobalController extends GenericServlet {
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {

        /**
         .do
         /login.do         DefaultController
         /Canvas/detail.do     CanvasController
        /admin/Canvas/add.do     CanvasController
         */
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        String path = request.getServletPath();
        if (path.indexOf("/admin") != -1){
            path = path.substring(7);
        }else {
            path = path.substring(1);
        }
        /**
         .do
         login.do         DefaultController
         Canvas/detail.do     CanvasController
         Canvas/add.do     CanvasController
         */
        int index = path.indexOf("/");
        String className = null;
        String methodName = null;
        if (index != -1){
             className = "cn.zzf.canvas.controller."+path.substring(0,index)+"Controller";
             methodName = path.substring(index+1,path.indexOf(".do"));
        }else{
            className = "cn.zzf.canvas.controller.DefaultController";
             methodName = path.substring(0,path.indexOf(".do"));
        }
        try {
            Class clz = Class.forName(className);
            Object o = clz.newInstance();
            Method method = clz.getMethod(methodName,HttpServletRequest.class,HttpServletResponse.class);
            method.invoke(o,request,response);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
    }
}


<servlet>
   <servlet-name>GlobalServlet</servlet-name>
   <servlet-class>cn.zzf.canvas.global.GlobalController</servlet-class>
</servlet>
<servlet-mapping>
   <servlet-name>GlobalServlet</servlet-name>
   <url-pattern>*.do</url-pattern>
</servlet-mapping>


启动后,只显示http://localhost:8080/,自己输入http://localhost:8080/index.do可以显示页面

正在回答 回答被采纳积分+1

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

3回答
chrismorgen 2019-03-12 19:08:38

1、关于同学启动后只显示http://localhost:8080/,你可以在idea中进行配置,让idea程序启动之后去访问index.do这个路径,可以按下图演示的方法进行操作。

http://img1.sycdn.imooc.com//climg/5c878e770001246210890719.jpg

2、建议同学在Terminal中对项目重新编译一下: mvn compile执行这个命令后,看下是否还会出现这个问题。祝学习愉快~


  • 提问者 一只勤奋的蜗牛 #1
    可以了,自己想当然了,以为是可以的。 老师能不能再回答下,我这验证码的图片不显示的问题吗?图片在上个回答里贴出来了
    2019-03-12 22:01:55
  • chrismorgen 回复 提问者 一只勤奋的蜗牛 #2
    你好同学,验证码的问题需要你在浏览器中按F12,需要看一下控制台中的报错是什么,祝学习愉快~
    2019-03-13 13:39:05
提问者 一只勤奋的蜗牛 2019-03-12 17:51:27
提问者 一只勤奋的蜗牛 2019-03-12 17:10:39
java.lang.NoSuchMethodException: cn.zzf.canvas.controller.DefaultController.verificationCode(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	at java.lang.Class.getMethod(Class.java:1786)
	at cn.zzf.canvas.global.GlobalController.service(GlobalController.java:49)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
	at cn.zzf.canvas.global.EncodingFilter.doFilter(EncodingFilter.java:22)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:94)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1132)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
	at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2527)
	at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2516)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:748)

然后点击登录后,会报这个错,at cn.zzf.canvas.global.GlobalController.service(GlobalController.java:49),这个对应的是这句Method method = clz.getMethod(methodName,HttpServletRequest.class,HttpServletResponse.class);


并且登录页面验证码不出图

http://img1.sycdn.imooc.com//climg/5c87778300015d5c05160395.jpg

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
Java数据库开发与实战应用2018版
  • 参与学习           人
  • 提交作业       277    份
  • 解答问题       4297    个

Java数据库开发的必备技能,从流行的MySQL数据库开始,到Java原生的数据库管理接口JDBC的使用,再到常用的数据持久化框架MyBatis,让你向Java工程师的目标又迈进了一步!

了解课程
请稍等 ...
微信客服

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

帮助反馈 APP下载

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

公众号

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

在线咨询

领取优惠

免费试听

领取大纲

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