页面505

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

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

14回答
提问者 LuckiTC 2019-07-15 19:46:55

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

这里设置home.jsp为首页但是还是要自己输入home.jsp才能跳转

  • 同学你好,问一下同学home.jsp是否在webapp目录下呢,另外建议同学去掉default.jsp只剩下一个home.jsp,重启项目再试试。祝:学习愉快~
    2019-07-16 10:54:17
吃吃吃鱼的猫 2019-07-15 19:15:46

同学你好,在InitSqlSessionListener类中的contextInitialized方法中,缺少初始化SqlSessionFactory的方法。

需要添加以下标识代码:

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

其次,问一下同学wb.xml中是不是也配置了servlet?

如果有的话,需要去掉。

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

以上改正后,程序重新运行进行测试~

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 LuckiTC #1
    谢谢老师,是我粗心了,现在前台已经可以访问到数据了,不过还有个小问题
    2019-07-15 19:45:34
提问者 LuckiTC 2019-07-15 18:32:10
package com.tc.listener;
import com.tc.utils.SqlSessionFactoryUtils;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

@WebListener
public class InitSqlSessionListener implements ServletContextListener {
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("容器初始化加载中");
    }

    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("销毁。。。。");
        SqlSessionFactoryUtils.close();
    }
}


提问者 LuckiTC 2019-07-15 18:31:40
package com.tc.utils;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class SqlSessionFactoryUtils {

private static String RESOURCE="mybatis-config.xml";
private static SqlSessionFactory sqlSessionFactory;
private static ThreadLocal<SqlSession> threadLocal=new ThreadLocal<SqlSession>();

/**
 * 创建一个初始化SqlSessionFactory
 */

public static void initSqlSessionFactory(){
    try {
        InputStream is= Resources.getResourceAsStream(RESOURCE);
        System.out.println(is.toString());
        sqlSessionFactory=new SqlSessionFactoryBuilder().build(is);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

/**
 * getSqlSessionFactory的对象
 */
public static SqlSessionFactory getSqlSessionFactory(){
    System.out.println("创建sql工厂");
    return sqlSessionFactory;
}
/**
 * 关闭
 */
public static void close(){
    SqlSession session=threadLocal.get();
    if (session!=null){
        session.close();
        threadLocal.set(null);
    }
}










}


提问者 LuckiTC 2019-07-15 18:30:30
package com.tc.servlet;
import com.tc.dao.UserDao;
import com.tc.entity.User;
import org.junit.Test;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.*;
import java.util.List;

@WebServlet("/index")
public class UserFindServlet extends HttpServlet {
    private UserDao userdao = new UserDao();

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("创建Dao对象成功");
        List<User> list = userdao.findAll();
        request.setAttribute("UserList", list);
        System.out.println("查詢。。。");
        for (User user : list) {
            System.out.println(list);
        }

        request.getRequestDispatcher("index.jsp").forward(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }


}


吃吃吃鱼的猫 2019-07-15 18:27:16

同学你好,首先可以根据以下方式查看启动时定位的地址哦~

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

我这里是定位到路径为/index的UsersFindServlet中。

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

其次,同学检查一下在UsersFindServlet中,是否有@WebServlet("/index")的注解呢。

如果有的话,web.xml中是否也配置了该servlet呢?

如果是的话,两种配置需要去掉一种。

如果没有的话,需要加上一种哦~

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

若是同学还没有解决问题的话,建议贴出UserFindServlet类,SqlSessionFactoryUtils
类,InitSqlSessionListener类的代码,方便老师为同学解决问题哦~

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

提问者 LuckiTC 2019-07-15 18:18:51

需要什么代码吗


提问者 LuckiTC 2019-07-15 18:05:26

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

现在报错也是这个错误,网上搜了下,没什么能解决的

  • 提问者 LuckiTC #1
    我现在的问题:1改了默认为home.jsp,但是不起作用,还是先跳到index的页面,URL还是localhost:8080 2 手动输入home.jsp跳转不到index对应的servlet里,这个问题我是真的不知道怎么解决了,两种配置servlet的方法都用过了,也重新编译过几次,仍然跳转不到servlet里,
    2019-07-15 18:17:11
提问者 LuckiTC 2019-07-15 17:58:17

这是我输入home.jsp后跳转index的错误信息,index的那个servlet好像根本没跳转。

然后你说正常跳转也不对,我在home.jsp添加了一行输出语句,但是没有执行,只有当我输入home.jsp时才输出

吃吃吃鱼的猫 2019-07-15 17:57:16

同学你好,问一下同学编写InitSqlSessionListener类了吗?没写的话就不能对SqlSessionFactory进行初始化,这时会造成空指针异常。


InitSqlSessionListener类的内容如下:

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


如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 LuckiTC #1
    有的 我现在感觉是servlet没办法被访问,
    2019-07-15 18:03:54
提问者 LuckiTC 2019-07-15 17:54:36

HTTP Status 500 – Internal Server Error

Type Exception Report

Message Error instantiating servlet class [com.tc.servlet.UserFindServlet]

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

javax.servlet.ServletException: Error instantiating servlet class [com.tc.servlet.UserFindServlet]
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:660)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:798)
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:808)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:745)

Root Cause

java.lang.NullPointerException
com.tc.dao.UserDao.<init>(UserDao.java:11)
com.tc.servlet.UserFindServlet.<init>(UserFindServlet.java:18)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
java.lang.reflect.Constructor.newInstance(Constructor.java:423)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:660)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:798)
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:808)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:745)

Note The full stack trace of the root cause is available in the server logs.


吃吃吃鱼的猫 2019-07-15 17:51:28

同学你好,

在home.jsp页面中重定向到/index。

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

即:跳转至UsersFindServlet,在UsersFindServlet中的doPost方法中,跳转至index.jsp。

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

所以,同学的显示是正确的哦~

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

提问者 LuckiTC 2019-07-15 16:20:53

每次重启Tomcat直接跳转到http://img1.sycdn.imooc.com//climg/5d2c36db0001d6b421000787.jpg

但是我servlet的xmlhttp://img1.sycdn.imooc.com//climg/5d2c373c0001853214280452.jpg

应该是直接跳到home.jsp中的

提问者 LuckiTC 2019-07-15 16:09:31

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

一会500一会404,折腾很久了,百度说什么重新build根本没用,,

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

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

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

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

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

帮助反馈 APP下载

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

公众号

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

在线咨询

领取优惠

免费试听

领取大纲

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