老师怎么回事
来源:3-3 综合训练-实现新增员工功能
SomnusL
2020-04-02 04:04:47
醉了,运行一直是405没有实现get。我们用的是post啊
package employee;
public class Employee {
private Integer empno;
private String ename;
private String department;
private String job;
private Float salary;
public Employee(Integer empno, String ename, String department, String job, Float salary) {
this.empno = empno;
this.ename = ename;
this.department = department;
this.job = job;
this.salary = salary;
}
public Integer getEmpno() {
return empno;
}
public void setEmpno(Integer empno) {
this.empno = empno;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public Float getSalary() {
return salary;
}
public void setSalary(Float salary) {
this.salary = salary;
}
}
package 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("/CreateServlet")
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("departemnt");
String job=request.getParameter("job");
String salary=request.getParameter("salary");
System.out.println(empno);
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);
}
}
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="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="/employeePro/CreateServlet" 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 -->
</body>
</html>
第二 就算我用get实现,把jsp和createServlet改成get方法还是报错类型转换的问题又怎么解决
2回答
同学你好,
1、get方式http://localhost:8080/employeePro/CreateServlet会报405错误,是因为CreateServelt中只有doPost方法,没有doGet方法。
访问http://localhost:8080/employeePro/CreateServlet,浏览器默认是以get方式访问后端的。
2、新增的员工编号empno应该是数字如100,否则创建Employee对象的时候Integer.parseInt(empno)会因转换失败而报错。
3、代码中有一处拼写错误,应该将departemnt改为department。
修改如下图:
4、建议对employees判断一下是否为空。避免报NullException异常。
修改如下图:
5、不建议表单的action中包含项目访问的名称如employeePro。
修改如下图:
6、访问http://localhost:8080/employeePro/employee.jsp ,新增员工。如下图:
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
SomnusL
提问者
2020-04-02
老师不是啊。我这个写的完全是按照视频里老师写的啊。为什么老师没有doGet也能运行?所以我要怎么改才能让没有doGet也能运行?第二就是就算我用doGet来写 启动浏览器的时候就报错500的类型转换问题了,并不是在添加的时候才报错啊。
相似问题