页面跳转的时候是404

页面跳转的时候是404

是不是所有的servlet都是如此如法炮制完成页面跳转即可?我现在的困惑就是impl的实现方法,有一些有返回值,可是我只想list增加,有的直接是Book类,不知道怎么设置方法,还有私有静态方法,这个是方法还是属性?用方法会报错,如果是属性,意义何在?阿贾克斯写在哪个里面?文件上传类是按照课程来么,写在哪里?jar除了课程用过的那些,除了json,还需要什么,在哪里下载







package com.imooc.servlet;
import com.imooc.domain.User;
import com.imooc.service.UserService;
import com.imooc.service.impl.UserServiceImpl;

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.util.ArrayList;
import java.util.List;

@WebServlet(urlPatterns = "/UserServlet")
public class UserServlet extends HttpServlet {
   protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //收集数据
      String username= request.getParameter("username");
      String password = request.getParameter("password");
       //封装数据
       User user=new User();
       user.setUsername(username);
       user.setPassword(password);
       //处理数据
       UserService userService=new UserServiceImpl();
       //获取集合
       List<User> userList=(List<User>)getServletContext().getAttribute("userList");
       //显示结果
       response.sendRedirect(request.getContextPath()+"categoryList.jsp");
   }

   protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

   }
}

<%@page language="java" contentType="text/html; ISO-8859-1" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
   <head>
       <meta charset="UTF-8">
       <title>登录</title>
       <link rel="stylesheet" href="css/login.css">
   </head>
   <body>
       <div class="login">
           <div class="header">
               <h1>
                   <a href="/login.do">登录</a>
               </h1>
               <button></button>
           </div>
           <form action="/UserServlet" method="post">
               <div class="name">
                   <input type="text" id="name" name="username">
                   <p></p>
               </div>
               <div class="pwd">
                   <input type="password" id="pwd" name="password">
                   <p></p>
               </div>
               <div class="code">
                   <input type="text" id="code" name="verifyCode" style="width: 150px">
                   &nbsp;&nbsp;&nbsp;&nbsp;
                   <img src="code.jpg" style="width: 150px;height: 42px;vertical-align: middle;">
                   <p></p>
               </div>
               <div class="btn-red">
                   <input type="submit" value="登录" id="login-btn">
               </div>
           </form>
       </div>
   </body>
</html>

package com.imooc.domain;

public class User {
   private String username;
   private String password;

   public User() {
   }

   public User(String username, String password) {
       this.username = username;
       this.password = password;
   }

   public String getUsername() {
       return username;
   }

   public void setUsername(String username) {
       this.username = username;
   }

   public String getPassword() {
       return password;
   }

   public void setPassword(String password) {
       this.password = password;
   }
}

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

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

6回答
好帮手慕阿满 2020-07-06 09:53:30

同学你好,${pageContext.request.contextPath}是获取上下文路径,通常是指项目名。这里不确定同学的项目名是什么,所以使用${pageContext.request.contextPath}。

同学如下问题是什么意思呢?建议同学可以代码举例。

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

如果同学有什么报错,请将报错信息贴一下。

祝:学习愉快~

好帮手慕阿满 2020-07-05 19:20:51

同学你好,同学需要在login.jsp页面中,action中增加项目名,如:

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

修改后

action="${pageContext.request.contextPath}/UserServlet"

将数据存入session中,参考如下:

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

如果还有其他报错,请将报错贴一下。

祝:学习愉快~

  • 提问者 慕函数4736799 #1
    为什么表单不需要用el获取上下文路径,而普通超链接要。是否用el pagecontent的区别是不是就在这里,我用了就不需要工程名了
    2020-07-05 19:31:44
  • 提问者 慕函数4736799 #2
    增加了项目名称,还是无效
    2020-07-05 19:35:31
  • 提问者 慕函数4736799 #3
    不好意思,老师。我看差了,哈哈,不是加工程名。原来我就是用这个的,有个老师和我说不必用,我就没用了。我记得好像可以不用这个,直接写上下文路径加URL,为什么这次不行了
    2020-07-05 19:45:22
好帮手慕阿满 2020-07-05 17:51:08

同学你好,关于同学的问题:

1、

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

报错提示books变量没有被初始化。常量需要在定义时就初始化,例如:

private static final List<Book> books = new ArrayList<Book>();

2、

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

404错误是路径找不到问题,在同学的截图中发现没有项目名,问一下同学在路径中添加项目名再试试。

3、重定向无法携带参数跳转,可以将数据存入request中,然后使用转发进行跳转。或者同学将数据存入session中,数据在整个session中有效,可以使用重定向,然后从session中获取数据。

4、新开一个链接和在这个窗口打开,与重定向无关。

如果是a标签,可以设置target="_blank",表示在新窗口打开链接,如:<a href="xxx" target="_blank">新窗口打开</a>。

如果在原来的窗口打开,可以设置target="_parent",如:<a href="xxx" target="_parent">原窗口打开</a>。

5、关于同学所说的用户登录类不是很理解。如下的用户信息处理类是用来做登录判断,如:

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

本次作业要求在监听器中存放几条用户信息,将用户信息存入到servletContext中,然后登录时,判断登录的用户是否存在,如:

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

本次作业需要在监听器中事先存放几条用户信息,登录时,使用存在的用户信息进行登录,不需要注add添加。

在Servlet中,获取登录的用户信息,获取存入ServletContext中的用户集合,将其作为参数,传入login()方法中,在login()方法中,判断登录的用户信息是否在servletContext中存在,如果存在,则返回0(这里的数字是随便写的,在servlet中接收返回值时,根据返回值来判断。比如存在返回,0,则在servlet中增加if判断,如果返回值为0,表示登录的用户存在,登录成功,跳转到显示分类的页面),否则返回1。

祝:学习愉快~

  • 提问者 慕函数4736799 #1
    加了工程名,无效。我打开login.jsp是可以打开的,点击登录跳转到servlet才404。于是有了这张截图。现在我就是不知道为什么不能够跳转,事实证明login没问题,现在不知道是servlet有问题还是其他什么问题。还有,怎么把数据存到session。还有我初始化后一样报错,详情见新恢复截图。我也好几这边初始化一个集合是干嘛的。。。
    2020-07-05 18:54:58
  • 提问者 慕函数4736799 #2
    属性报错解决了,其他还有问题
    2020-07-05 18:58:50
提问者 慕函数4736799 2020-07-05 15:41:52

http://img1.sycdn.imooc.com//climg/5f0184220994032013210257.jpg能转到UserServlet,但是404

提问者 慕函数4736799 2020-07-05 15:20:44

http://img1.sycdn.imooc.com//climg/5f017ecb09d76e7206960151.jpg属性定义依然报错,我需要跳转的页面都在web下,不是这个问题,如果不是代码问题我不知道能使什么情况。是不是大多数情况下使用转发都比较好,重定向无法保存数据不是很弱么,他有什么好处

好帮手慕阿满 2020-07-05 13:54:56

同学你好,404错误是路径找不到报错,问一下同学categoryList.jsp是在WebContent目录下吗?如果不是,建议同学修改重定向的路径。另外如果categoryList.jsp页面在WEB-INF目录下,必须使用转发访问。

页面跳转可以使用转发和重定向进行访问。

在思路分析中,将需要的方法以及给出,如:

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

大部分方法的返回值都是void,如下的方法设置了返回值类型:

用户登录 的login()方法,返回值是int,可以用来判断是否成功登录,比如返回0,表示登录成功,返回1,表示用户名或密码错误等等。

根据图书ID来查询书籍信息的getBooksById()方法,该方法是查询书籍信息,查询到书籍信息后,将书籍信息返回,所以返回值是Book类型。

根据分类来查询书籍信息的getBooksByCategoryName()方法,该方法是通过分类名称查询书籍信息,该分类下可能有多个书籍信息,所以返回值List<Book>。

private static final List<Category> categoryDb;和private static final List<Book> books;是属性。categoryDb用来存放分类,books用来存放书籍信息。

Ajax查询的代码写在bookList.jsp页面中。

文件上传类安装课程来写。

项目所需要的的jar包,在之前的项目中都用过,同学可以从之前的项目中查找。

建议同学复习之前学过的课程,再来完成作业。

祝:学习愉快~

  • 提问者 慕函数4736799 #1
    还是哟偶问题处理不了,写在了上面
    2020-07-05 15:21:13
  • 提问者 慕函数4736799 #2
    我看了一下,我是login.jsp跳转到userServlet,然后再重定向到categoryList,但是404。category再web下。话说,我在用重定向,是不是无法保存数据
    2020-07-05 15:24:24
  • 提问者 慕函数4736799 #3
    新开一个链接和再这个窗口打开,那个是重定向
    2020-07-05 15:27:40
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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