AddCategoryServlet问题

AddCategoryServlet问题

1、提交页面是post方法,servlet中是不是代码只能写在dopost中?

2、下面两个跳转语句有什么区别喃,用第一个的话,页面没有显示

// response.sendRedirect(request.getContextPath() + "/categoryList.jsp");

request.getRequestDispatcher("/categoryList.jsp").forward(request, response);

3、使用第二个跳转页面,在页面上有显示,但是在地址栏显示地址是servlet,要是点击“分类管理”,之前提交的数据就会消失

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


<%@ page contentType="text/html; charset=UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>新建图书分类</title>

<link rel="stylesheet"  href="css/bootstrap.min.css">

<link rel="stylesheet"  href="css/add.css">

</head>

<body>

<nav class="navbar navbar-default">

<div class="container">

<div class="navbar-header">

<a class="navbar-brand" href=""> 图书分类管理 </a>

</div>

</div>

</nav>

<div class="container">

<div class="jumbotron">

<h1>Hello, ${existUser.username}!</h1>

<p>请小心地新增图书分类,要是建了一个错误的就不好了。。。</p>

</div>

<div class="page-header">

<h3>

<small>新建</small>

</h3>

</div>

<form class="form-horizontal"

action="${pageContext.request.contextPath}/AddCategoryServlet"

method="post">

<div class="form-group">

<label for="categoryId" class="col-sm-2 control-label">分类ID

:</label>

<div class="col-sm-8">

<input name="categoryId" class="form-control" id="categoryId">

</div>

</div>

<div class="form-group">

<label for="categoryName" class="col-sm-2 control-label">分类名称

:</label>

<div class="col-sm-8">

<input name="categoryName" class="form-control" id="categoryName">

</div>

</div>


<div class="form-group">

<div class="col-sm-offset-2 col-sm-10">

<button type="submit" class="btn btn-primary">保存</button>

&nbsp;&nbsp;&nbsp;

</div>

</div>

</form>

</div>

<footer class="text-center"> copy@imooc </footer>

</body>

</html>

+++++++++++++++++++++++++++

package com.imooc.servlet;


import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;


import com.imooc.service.impl.CategoryServiceImpl;



@WebServlet("/AddCategoryServlet")

public class AddCategoryServlet extends HttpServlet {

private static final long serialVersionUID = 1L;


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

}


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// 接收页面提交的图书类的ID-bookId,图书类的名字-categoryName

String categoryId = request.getParameter("categoryId");

String categoryName = request.getParameter("categoryName");

// 处理数据

CategoryServiceImpl category = new CategoryServiceImpl();

category.addCatgory(categoryId, categoryName);

request.setAttribute("categorys", category.getCategorydb());

System.out.println("保存书类的数据");

System.out.println(category.getCategorydb());

// 显示数据处理结果,跳转至categoryList.jsp

// response.sendRedirect(request.getContextPath() + "/categoryList.jsp");

request.getRequestDispatcher("/categoryList.jsp").forward(request, response);

doGet(request, response);

}


}


正在回答 回答被采纳积分+1

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

2回答
好帮手慕阿园 2020-07-19 19:08:08

同学你好,很抱歉老师没有看到,同学书写的是正确的,同学检查下categoryList.jsp页面上点击分类管理的href地址是否正确,并查看点击分类管理后页面的地址是否正确

如下

categoryList.jsp

 
     <nav>
     <a href="${pageContext.request.contextPath }/categoryList.jsp" >分类管理</a>
     </nav>

如果没有解决同学的问题,建议同学将categoryList.jsp页面反馈到问答区

祝学习愉快

好帮手慕阿园 2020-07-19 17:41:07

同学你好

1,也可以在doGet方法中编写代码,在doPost方法中调用doGet

2,第一个跳转页面是重定向,第二个是转发

当携带着参数进行跳转时,应该使用转发。当跳转的页面再WEB-INF目录下时,也应该用转发。如果不想显示跳转后的路径时,需要用到转发,其余情况使用重定向和转发都可以。第二个用的转发,所以不显示跳转后的路径

3,没有显示是因为同学没有把数据放入域中,同学可以将数据放入rquest作用域中

如:

request.setAttribute("categoryDb",category.getCategorydb());

祝学习愉快


  • 提问者 视线模糊 #1
    request.setAttribute("categorys", category.getCategorydb()); System.out.println("保存书类的数据"); 在输出“保存书类的数据”上面写了这句的啊
    2020-07-19 17:58:39
  • 提问者 视线模糊 #2
    package com.imooc.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.imooc.service.impl.CategoryServiceImpl; @WebServlet("/AddCategoryServlet") public class AddCategoryServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 接收页面提交的图书类的ID-bookId,图书类的名字-categoryName String categoryId = request.getParameter("categoryId"); String categoryName = request.getParameter("categoryName"); // 处理数据 CategoryServiceImpl category = new CategoryServiceImpl(); category.addCatgory(categoryId, categoryName); request.setAttribute("categoryDb",category.getCategorydb()); request.setAttribute("categorys", category.getCategorydb()); System.out.println("保存书类的数据"); System.out.println(category.getCategorydb()); // 显示数据处理结果,跳转至categoryList.jsp // response.sendRedirect(request.getContextPath() + "/categoryList.jsp"); request.getRequestDispatcher("/categoryList.jsp").forward(request, response); doGet(request, response); } } 这样写吗?没效果啊
    2020-07-19 18:32:10
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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