请老师看看哪儿错了

请老师看看哪儿错了

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

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

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

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

我跟着老师做2-9的时候出错了,报了500错误说错误发生在login.jsp的第十二行,但是我改了control.jsp(如图,因为有一次编译器给我报control.jsp的错)然后就好了,可是这样逻辑就不存在了。

以下是代码login.jsp:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>人事管理系统</title>
</head>
<body>
	<% 
		request.setAttribute("name", "imooc");
		request.getRequestDispatcher("control.jsp").forward(request, response);
	%>
	<h3 align = "center">人事管理系统登陆页面</h3>
	<hr>
	<!-- action代表了服务器端处理程序 -->
	<form action="control.jsp">
		<table align="center">
			<tr>
				<td>
					账号:
				</td>
				<td>
					<input type="text" name = "account">
				</td>
			</tr>
			<tr>
				<td>
					密码:
				</td>
				<td>
					<input type="password" name = "password">
				</td>
			</tr>
			<tr>
				<td>
					<input type="submit" value="登陆">
				</td>
			</tr>
		</table>
	</form>
</body>
</html>

control.jsp:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"  import="com.imooc.bean.*,com.imooc.db.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<%=request.getAttribute("name") %>
	<%		
			String account = request.getParameter("account");
			String password = request.getParameter("password");
			Emp e = new Emp(account,null,password,null);
			boolean flag = true;
			if(flag == true){
	%>
	<!-- 当信息正确时,显示页面 -->
		<table align="center" border="1px solid green" cellspacing="0">
			<tr>
				<td>
					账号
				</td>
				<td>
					员工姓名
				</td>
				<td>
					邮箱
				</td>
			</tr>
			<%for(Emp emp:DBUtil.map.values()){  %>
			<tr>
				<td>
					<%=emp.getAccount() %>
				</td>
				<td>
					<%=emp.getName()%>
				</td>
				<td>
					<%=emp.getEmail() %>
				</td>
			</tr>
			<%} %>
		</table>
	<%
	}else{ 
	%>
	<!-- 当信息错误时,显示页面 -->
	<% } %>
</body>
</html>

请老师帮我纠正一下错误(附:验证用户名密码是否正确的函数经过测试没有问题)

正在回答

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

2回答

同学可以看一下4分30秒处老师的视频,老师是新建了一个resurt.jsp文件转发到这个页面,你转发到control.jsp这个里边的话,这个control.jsp页面需要login提交的用户名和密码,如果是空的,就会出现这个错误,而你在logon.jsp转发的时候,并没有提交用户名密码,所以control.jsp中的account和password都为null,所以,第15行传进去的Emp e 所有的属性为null,在DBUtils里,比较的时候,就会产生空指针异常了。建议同学像老师一样,新建一个jsp页面转发。

  • 慕村3232222 提问者 #1
    明白了明白了,一旦使用request.getRequestDispatcher(xx.jsp)就是跳转到xx页面,但是我没有经过输入账号和密码这一步,所以传进方法的参数都是空就发生空指针异常了,3Q!
    2018-06-05 18:03:41
喜欢做梦的鱼 2018-06-04 11:51:42

请问同学,项目中涉及到的其他类是用的老师源码,还是自己参考编写的,如果是自己参考编写的,请贴出其他涉及到的完整代码,以便于准确定位问题,目前同学只贴出了两个jsp文件,由于不知道其他内容,无法参考定位问题。

  • 提问者 慕村3232222 #1
    是我参考编写的 request.jsp的代码: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> request对象获取到的数据:<%= request.getAttribute("name") %> </body> </html> Emp类里面的代码: package com.imooc.bean; public class Emp { private String account; private String name; private String password; private String email; public Emp(String account, String name, String password, String email) { super(); this.account = account; this.name = name; this.password = password; this.email = email; } public String getAccount() { return account; } public void setAccount(String account) { this.account = account; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
    2018-06-04 23:06:28
  • 提问者 慕村3232222 #2
    因为回复不能超过1500个字符,所以我掐开了 DBUtil类里的内容: package com.imooc.db; import java.util.HashMap; import java.util.Map; import com.imooc.bean.Emp; public class DBUtil { public static Map<String,Emp> map = new HashMap<String,Emp>(); static { map.put("101", new Emp("101","AA","123456","AA@imooc.com")); map.put("102", new Emp("102","BB","123456","BB@imooc.com")); map.put("103", new Emp("103","CC","123456","CC@imooc.com")); map.put("104", new Emp("104","DD","123456","DD@imooc.com")); } public static boolean selectEmpByAccountAndPassword(Emp emp) { boolean flag = false; for(String key : map.keySet()) { Emp e = map.get(key); if(emp.getAccount().equals(e.getAccount()) && emp.getPassword().equals(e.getPassword())) { flag = true; } } return flag; } }
    2018-06-04 23:09:11
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
Java Web基础入门2018版
  • 参与学习       716    人
  • 提交作业       185    份
  • 解答问题       1363    个

会Java?懂前端基础?想学后台开发?那么,赶快来学习《Java Web入门》路径吧。本路径主要介绍Java Web的基础知识,并配有大量案例,定会让你收获多多!

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

在线咨询

领取优惠

免费试听

领取大纲

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