看不出来哪错了

来源: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>&nbsp;</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">&times;</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回答

好帮手慕小班

2020-01-03

同学你好,运行贴出代码,同学是否在浏览器中按照如下操作-->http://localhost:8080/employee/list 进入到员工展示列表-->添加员工-->执行CreateServlet中内容-->添加成功

同学这里报错

http://img.mukewang.com/climg/5e0f10a309ddda6305230159.jpg

报错的41行是否是-->employees.add(emp);    employees报出了空指针异常的错误,如果是,这是因为同学没有从ListServlet(list)跳转过来,导致没有获取到employees的内容,导致的空指针异常。

如果是上述问题,同学可以按照上面的步骤再来操作一遍,如果不是这个问题,还麻烦同学具体描述报错行是哪行代码。

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

0

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 里查看


0

好帮手慕小班

2020-01-03

同学你好,运行贴出代码,同学说的是报出了如下错误吧

http://img.mukewang.com/climg/5e0f02a709df55c406110292.jpg

如果是,根据报错信息提示,空指针的异常,数字信息格式转换导致的(将null转为对应的float类型的数值报出的这个异常信息),对应查找获取工资参数的内容:

    在页面中name属性是

http://img.mukewang.com/climg/5e0f0320098bfe7d10920213.jpg

在servlet中获取工资属性:

http://img.mukewang.com/climg/5e0f034a0981f48905460078.jpg

同学获取工资属性时,参数名称书写有误,导致没有获取到对应的工资属性,数字格式转换异常,导致报错。

修改获取工资属性为salary

http://img.mukewang.com/climg/5e0f0569092b837d06140097.jpg

建议同学以后将报错信息也具体的贴出,便于老师根据错误信息定位问题。

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

0

0 学习 · 9666 问题

查看课程