HTTP状态 405 - 方法不允许 内详

HTTP状态 405 - 方法不允许 内详

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>新建</title>
        <link rel="stylesheet" href="../../../resources/admin/css/bootstrap.min.css">
        <link rel="stylesheet" href="../../../resources/admin/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="page-header">
                <h3><small>新建</small></h3>
            </div>
            <form class="form-horizontal" action="/admin/cm/cc" method="post">
                <div class="form-group">
                    <label for="name" class="col-sm-2 control-label">名称 :</label>
                    <div class="col-sm-8">
                        <input name="name" class="form-control" id="name">
                    </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.lib.controller;
import com.alibaba.fastjson.JSON;
import com.imooc.lib.entity.Category;
import com.imooc.lib.service.CategoriesService;
import org.slf4j.ILoggerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@WebServlet(name = "CategoriesManageServlet", value = "/admin/cm/*")
public class CategoriesManageServlet extends HttpServlet {
    private CategoriesService categoriesService =new CategoriesService();
    private Category category;
    Logger logger = LoggerFactory.getLogger(CategoriesManageServlet.class);
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        String uri = request.getRequestURI();
        System.out.println(uri);
        String methodName = uri.substring(uri.lastIndexOf("/")+1);
        System.out.println(methodName);
        if (methodName.equals("categories")){
            System.out.println(methodName);
            this.getCategoryList(request, response);
        }else if(methodName.equals("cc")){
            System.out.println(methodName);
            this.createCategory(request, response);
        }
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
    }
    private void getCategoryList(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException {
        List<Category> categories = categoriesService.getAllCategories();
        request.setAttribute("categories",categories);
        request.getRequestDispatcher("/forward/category").forward(request, response);
    }
    private void createCategory(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
        category = new Category();
        String name = request.getParameter("name");
        category.setName(name);
        category.setCreateTime(new Date());
        category.setUpdateTime(new Date());
        categoriesService.insert(category);
        this.getCategoryList(request, response);
    }
}

https://img1.sycdn.imooc.com//climg/62aaaa9f09103c9106610297.jpg

这里提示 post is not supported by this url 那我下面的页面明明有doPost 直接跳转到doGet处理

 doGet(request, response);

为什么不起作用呢?

把表单的提交方式改为get后,又出现无法新建数据的情况,不知道以上代码哪里又问题?

这个问题里又两个小问题组成,麻烦老师了!

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

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

1回答
好帮手慕小尤 2022-06-16 15:46:35

同学你好,1、405表示不允许的方法,可能是getCategoryList()方法请求转发导致的问题建议同学在 createCategory()方法中使用重定向的方式跳转到getCategoryList()方法中,然后重新测试代码试一下。

2、没有数据可能是同学没有成功添加导致的。

祝学习愉快!

  • 提问者 晓舟 #1

    2、数据是添加了但是都是添加的go 而不是在input输入框中输入的,想问下怎么回事儿?

    2022-06-16 15:53:19
  • 提问者 晓舟 #2

    法1使用重定向方法应该怎么操作呢?

     response.sendRedirect("/forward/category");

    是这个吗?

    2022-06-16 16:01:23
  • 好帮手慕小尤 回复 提问者 晓舟 #3

    同学你好,1、建议同学在createCategory()方法中查看是否有成功获取前端传递的数据。如下所示:https://img1.sycdn.imooc.com//climg/62aaeb9f0967def206950167.jpg

    2、同学重定向访问/admin/cm/categories。

     response.sendRedirect("/admin/cm/categories");

    祝学习愉快!

    2022-06-16 16:48:07
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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