老师,我发现了问题,但是不知道怎么改。

老师,我发现了问题,但是不知道怎么改。

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

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

老师,因为我用的是eclipse,所以可能在跳转的时候没有加上工程的名字。所以出现404错误。可是有点懵的是,我不知道在哪里加。因为之前的/message/list.do也没有加可是能正常显示,所以就弄得我有点晕。麻烦老师帮忙解释一下。

正在回答

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

8回答

同学,你好!

你在登录的地址前添加上就可以呢,比如:

http://img1.sycdn.imooc.com//climg/5deb48ec095250fb15200218.jpghttp://img1.sycdn.imooc.com//climg/5deb49b1097d89c810260140.jpg

祝学习愉快~

好帮手慕柯南 2019-12-07 09:52:40

同学你好!

login.do不需要加request.getContextPath(),同学在浏览器中访问地址时,添加上项目名就可以呢,另外课程中提供了eclipse版的源码,同学也可以参考一下:

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

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


  • 提问者 Levinson #1
    老师。我的意思是。message/list.do是正常的。但是如果点击登录的话就出现上面那种情况的404
    2019-12-07 09:55:04
  • 提问者 Levinson #2
    老师。我的意思是。message/list.do是正常的。但是如果点击登录的话就出现上面那种情况的404
    2019-12-07 09:55:04
好帮手慕柯南 2019-12-06 19:27:00

同学你好!

request.getContextPath()获取到的就是上下文路径,也就是项目名称,所以这里可以访问/message/list.do

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

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

  • 提问者 Levinson #1
    所以老师我login.do前面也加这个吗?是加在哪里呢?
    2019-12-06 19:28:12
提问者 Levinson 2019-12-06 19:17:19

我是按照老师的视频敲的:


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

好帮手慕柯南 2019-12-06 19:06:45

同学你好!

  1. 直接在浏览器中访问/message/list.do正常是访问不到的呢

  2. 请问同学是怎么访问/message/list.do的呢,通过其它地址跳转的吗?

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

  3. 你创建项目时,项目的名称是什么?会不会是搞混了呢?

祝学习愉快~

提问者 Levinson 2019-12-06 18:10:02
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>JDBCMessageBoard</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
  <error-page>
   <error-code>404</error-code>
   <location>/WEB-INF/views/error/404.jsp</location>
  </error-page>
  
  <error-page>
   <error-code>500</error-code>
   <location>/WEB-INF/views/error/500.jsp</location>
  </error-page>
  
  <servlet>
   <servlet-name>MessageListServlet</servlet-name>
   <servlet-class>com.imooc.jdbc.servlet.MessageListServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
   <servlet-name>MessageListServlet</servlet-name>
   <url-pattern>/message/list.do</url-pattern>
  </servlet-mapping>
  
  <servlet>
   <servlet-name>LoginServlet</servlet-name>
   <servlet-class>com.imooc.jdbc.servlet.LoginServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
   <servlet-name>LoginServlet</servlet-name>
   <url-pattern>/main.do</url-pattern>
  </servlet-mapping>
  
  <servlet>
   <servlet-name>LoginPromptServlet</servlet-name>
   <servlet-class>com.imooc.jdbc.servlet.LoginPromptServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
   <servlet-name>LoginPromptServlet</servlet-name>
   <url-pattern>/login.do</url-pattern>
  </servlet-mapping>
</web-app>
package com.imooc.jdbc.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.imooc.jdbc.bean.User;
import com.imooc.jdbc.service.UserService;
public class LoginPromptServlet extends HttpServlet{
 @Override
 protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  request.getRequestDispatcher("/WEB-INF/views/biz/login.jsp").forward(request, response);
 }
 
}
package com.imooc.jdbc.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.imooc.jdbc.bean.User;
import com.imooc.jdbc.service.UserService;
public class LoginServlet extends HttpServlet{
 
 private UserService userService;
 
 @Override
 public void init() throws ServletException {
  super.init();
  userService = new UserService();
 }
 
 @Override
 protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  String username = request.getParameter("username");
  String password = request.getParameter("password");
  User user = userService.login(username, password);
  if (null != user) {
   request.getSession().setAttribute("user", user);
   request.getRequestDispatcher("/message/list.do").forward(request, response);
  } else {
   request.getRequestDispatcher("/login.do").forward(request, response);
  }
 }
 
 @Override
 public void destroy() {
  // TODO Auto-generated method stub
  super.destroy();
 }
}


好帮手慕柯南 2019-12-06 17:55:24

同学你好!

  1. 同学如果clean一下项目,重新访问/message/list.do是否还是访问呢?你的xml中是怎么配置的呢

  2. 你说的对,将Context root 里面的内容改成 / 的话就可以不用写项目名称了

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

  • 提问者 Levinson #1
    老师,访问/message/list.do是正常的。就是没法访问/login.do。问题就是之前那个问题,出现404错误
    2019-12-06 18:09:08
提问者 Levinson 2019-12-06 16:46:42

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

老师,是不是我们每次在创建项目的时候,如果把Context root 里面的内容改成 / 的话是不是就可以不用写项目名称了?

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

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

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

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

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

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

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

帮助反馈 APP下载

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

公众号

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

在线咨询

领取优惠

免费试听

领取大纲

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