看不出来哪错了
来源:3-3 综合训练-实现新增员工功能
weixin_慕瓜9083905
2020-01-03 14:18:06
<%@ page contentType="text/html;charset=utf-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>员工列表</title>
<link href="css/bootstrap.css" type="text/css" rel="stylesheet"></link>
<script type="text/javascript" src="js/jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="js/bootstrap.js"></script>
<style type="text/css">
.pagination {
margin: 0px
}
.pagination > li > a, .pagination > li > span {
margin: 0 5px;
border: 1px solid #dddddd;
}
.glyphicon {
margin-right: 3px;
}
.form-control[readonly] {
cursor: pointer;
background-color: white;
}
#dlgPhoto .modal-body{
text-align: center;
}
.preview{
max-width: 500px;
}
</style>
<script>
$(function () {
$("#btnAdd").click(function () {
$('#dlgForm').modal()
});
})
</script>
</head>
<body>
<div class="container">
<div class="row">
<h1 style="text-align: center">IMOOC员工信息表</h1>
<div class="panel panel-default">
<div class="clearfix panel-heading ">
<div class="input-group" style="width: 500px;">
<button class="btn btn-primary" id="btnAdd"><span class="glyphicon glyphicon-zoom-in"></span>新增
</button>
</div>
</div>
<table class="table table-bordered table-hover">
<thead>
<tr>
<th>序号</th>
<th>员工编号</th>
<th>姓名</th>
<th>部门</th>
<th>职务</th>
<th>工资</th>
<th> </th>
</tr>
</thead>
<tbody>
<c:forEach items="${applicationScope.employees }" var="emp" varStatus="idx">
<tr>
<td>${idx.index+1 }</td>
<td>${emp.empno }</td>
<td>${emp.ename }</td>
<td>${emp.department }</td>
<td>${emp.job }</td>
<td style="color: red;font-weight: bold"><fmt:formatNumber value="${emp.salary }" pattern="0,000.00"></fmt:formatNumber></td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</div>
</div>
<!-- 表单 -->
<div class="modal fade" tabindex="-1" role="dialog" id="dlgForm">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span>
</button>
<h4 class="modal-title">新增员工</h4>
</div>
<div class="modal-body">
<form action="/employee/create" method="post" >
<div class="form-group">
<label for="empno">员工编号</label>
<input type="text" name="empno" class="form-control" id="empno" placeholder="请输入员工编号">
</div>
<div class="form-group">
<label for="ename">员工姓名</label>
<input type="text" name="ename" class="form-control" id="ename" placeholder="请输入员工姓名">
</div>
<div class="form-group">
<label>部门</label>
<select id="dname" name="department" class="form-control">
<option selected="selected">请选择部门</option>
<option value="市场部">市场部</option>
<option value="研发部">研发部</option>
<option value="后勤部">后勤部</option>
</select>
</div>
<div class="form-group">
<label>职务</label>
<input type="text" name="job" class="form-control" id="sal" placeholder="请输入职务">
</div>
<div class="form-group">
<label for="sal">工资</label>
<input type="text" name="salary" class="form-control" id="sal" placeholder="请输入工资">
</div>
<div class="form-group" style="text-align: center;">
<button type="submit" class="btn btn-primary">保存</button>
</div>
</form>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
package com.imooc.employee; import java.io.IOException; import java.util.List; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class CreateServlet */ @WebServlet("/create") public class CreateServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public CreateServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); String empno=request.getParameter("empno"); String ename=request.getParameter("ename"); String department=request.getParameter("department"); String job=request.getParameter("job"); String saraly=request.getParameter("saraly"); Employee emp=new Employee(Integer.parseInt(empno),ename,department,job,Float.parseFloat(saraly)); ServletContext context=request.getServletContext(); List employees=(List)context.getAttribute("employees"); employees.add(emp); context.setAttribute("employees", employees); request.getRequestDispatcher("/employee.jsp").forward(request, response); } }
3回答
同学你好,运行贴出代码,同学是否在浏览器中按照如下操作-->http://localhost:8080/employee/list 进入到员工展示列表-->添加员工-->执行CreateServlet中内容-->添加成功
同学这里报错
报错的41行是否是-->employees.add(emp); employees报出了空指针异常的错误,如果是,这是因为同学没有从ListServlet(list)跳转过来,导致没有获取到employees的内容,导致的空指针异常。
如果是上述问题,同学可以按照上面的步骤再来操作一遍,如果不是这个问题,还麻烦同学具体描述报错行是哪行代码。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
weixin_慕瓜9083905
提问者
2020-01-03
package com.imooc.employee;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class CreateServlet
*/
@WebServlet("/create")
public class CreateServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public CreateServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String empno=request.getParameter("empno");
String ename=request.getParameter("ename");
String department=request.getParameter("department");
String job=request.getParameter("job");
String salary=request.getParameter("salary");
Employee emp=new Employee(Integer.parseInt(empno),ename,department,job,Float.parseFloat(salary));
ServletContext context=request.getServletContext();
List employees=(List)context.getAttribute("employees");
employees.add(emp);
context.setAttribute("employees", employees);
request.getRequestDispatcher("/employee.jsp").forward(request, response);
}
}
还是这样报错
Type 异常报告
描述 服务器遇到一个意外的情况,阻止它完成请求。
Exception
java.lang.NullPointerException
com.imooc.employee.CreateServlet.doPost(CreateServlet.java:41)
javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
):注意 主要问题的全部 stack 信息可以在 server logs 里查看
好帮手慕小班
2020-01-03
同学你好,运行贴出代码,同学说的是报出了如下错误吧
如果是,根据报错信息提示,空指针的异常,数字信息格式转换导致的(将null转为对应的float类型的数值报出的这个异常信息),对应查找获取工资参数的内容:
在页面中name属性是
在servlet中获取工资属性:
同学获取工资属性时,参数名称书写有误,导致没有获取到对应的工资属性,数字格式转换异常,导致报错。
修改获取工资属性为salary
建议同学以后将报错信息也具体的贴出,便于老师根据错误信息定位问题。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
相似问题