http错误码500 空指针报错。求助!!!

求助 专栏收录该内容
1 篇文章 0 订阅

http错误码500 空指针报错。求助!!!

运行一个登录重定向小案例,出现http错误码500 空指针异常错误,这里求教。
这里我原理吧文件夹名为登录的改为英文login,就可以运行了,不知道为什么?

项目结构

在这里插入图片描述

1、前端页面代码

登录页面,login.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录</title>
<style>
	*{margin: 0; padding: 0;}
	form{
		margin-left: 40%;
	}
	h2{
		margin-left: 90px;
	}
	.btn{
		width: 50px;
		height: 25px;
		margin-top: 10px;
		margin-left: 90px;
	}
</style>
</head>
<body>
	<!-- 
		/LoginServlet的路径是在WebContent目录下,所以在login.jsp文件下的action路径要添加..,如:../LoginServlet。
		这样跳转才可以成功
	 -->
	<form action="../LoginServlet" method="get">
		<h2>登录</h2>
		<p>用户名:<input type="text" name="username" /></p>
		<p>&nbsp;&nbsp;&nbsp;码:<input type="password" name="password" /></p>
		<input type="submit" value="登录" class="btn" />
	</form>
</body>
</html>

登陆失败页面,Error.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style>
	*{margin: 0; padding: 0;}
	
	div{
		margin-left: 700px;
	}
</style>
</head>
<body>
	<div>
		<h1>登录失败</h1>
		<h3><%=request.getAttribute("error") %></h3>
	</div>
	
</body>
</html>

登录成功页面,Successs.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>主页</title>
<style>
	*{margin: 0; padding: 0;}
	
	div{
		margin-left: 700px;
	}
</style>
</head>
<body>
	<div>
		<h1>主页</h1>
		<h3><%=request.getAttribute("msg") %></h3> 
	</div>
	
</body>
</html>

2、后台逻辑处理

LoginServlet.java:

package com.zzy.Servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class LoginServlet2
 */
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public LoginServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		request.setCharacterEncoding("utf-8");
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		System.out.println(username + "," + password);//这里测试传参是否真确,同时也是关观察空指针的重点
		
		if(!(username.equals("admin"))) {
			//用户名不存在
			//requeset.setAttribute()必须在重定向之前,这样在请求转发的时候,设置的信息才可以被一起发送过去
			request.setAttribute("error", "用户名不存在");
			request.getRequestDispatcher("/登录/Error.jsp").forward(request,response);
			
		}else if(!(password.equals("1234"))) {
			//密码错误
			request.setAttribute("error", "密码错误");
			request.getRequestDispatcher("/登录/Error.jsp").forward(request,response);
			
		}else {
			//登录成功
//			request.setAttribute("msg", "登录成功");
//			request.getRequestDispatcher("/登录/Success.jsp").forward(request,response);
			
			//重定向:第一种方法
			response.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY);
			response.setHeader("Location", "登录/Success.jsp");
			
			//重定向:第二种方法
//			request.setAttribute("msg", "登录成功");
//			response.setCharacterEncoding("UTF-8");
//			response.sendRedirect("登录/Success.jsp");
		}
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

##网页报错与控制台报错信息
网页报错
在这里插入图片描述
控制台拨错信息
在这里插入图片描述

  • 0
    点赞
  • 1
    评论
  • 3
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值