java - Spring Mvc 应用程序获取 - HTTP 状态 [404] – [未找到]

标签 java jsp spring-mvc

我与 Spring Mvc app 一起工作并获取 HTTP 状态 [404] – [未找到]。登陆页面为index.jsp ,

enter image description here

并从 Controller 方法调用,

@Controller
public class BitcoinWalletController {

   @RequestMapping("/")
   public String showBitcoinWallet() {

      return "index";
   }
}

index.jsp页面,汇款按钮最初被禁用,

<div class="buttons_box">
            <button type="button" class="btn btn-default btn-lg active" <%= canSendMoney ? "" : "disabled='true'"%>
                    data-toggle="modal" data-target="#myModal">Send money
            </button>
        </div>

并且仅在同步完成且 boolean canSendMoney 时才处于 Activity 状态返回true

如果按钮处于 Activity 状态,代码将处理 POST提供操作,

        <%--modal contents here--%>
        <div class="modal-content">

            <div class="model-header">
                <button type="button" class="close" data-dismiss="modal">&times!</button>
                <h4 class="modal-title">Send Money</h4>
            </div>

            <form id="send-form" class="form-horizontal" action="sendMoney.jsp" method="POST">

                <div class="modal-body">

                    <div class="form-group">
                        <label for="amount" class="col-sm-2 control-label">Send</label>
                        <div class="col-xs-4">
                            <input id="amount" name="amount" class="form-control" value="0">
                        </div>
                        <div class="btc-col">
                            <span>BTC</span>
                        </div>
                    </div>

                    <div class="form-group">
                        <label for="address" class="col-sm-2 control-label">to</label>
                        <div class="col-sm-10">
                            <input id="address" name="address" class="form-control">
                        </div>
                    </div>
                </div>

                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
                    <button type="submit" class="btn btn-default">Send</button>
                </div>

            </form>
        </div>

sendMoney.jsp下面提供了代码,

<body>
<%
    String amount = request.getParameter("amount").trim();
    String address = request.getParameter("address").trim();

    WalletSendMoneyController.getSendMoneyController().send(address, amount);

    // New location to be redirected
    String site = new String("/");
    response.setStatus(response.SC_MOVED_TEMPORARILY);
    response.setHeader("Location", site);
%>
</body>

当我输入所有必需且正确的信息并按下按钮时,它应该返回到原始页面 - index.jsp 。相反,我收到错误 HTTP Status [404] – [Not Found] ,

enter image description here

我目前没有地址 http://localhost:8080/sendMoney.jsp 的任何句柄。因为,如果POST提交正确,我想重定向到“/”。

我有jspsWEB-INF项目目录中的文件夹,

enter image description here

jsps dispatcher-servlet.xml 中提供的位置文件,

<bean id="jspViewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsps/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

we.xml知道dispatcher-servlet.xml在哪里位于,

<servlet>
        <description></description>
        <display-name>dispatcher</display-name>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

如何解决这个问题?谢谢。

最佳答案

Your code showing: You are actually trying to submit form to sendMoney.jsp which is not exist(might be, cause i can't see your whole project). Though you need to submit the form to a controller with a ModelAttribute which you need to create.

要从表单 POST 到 Controller ,您必须执行以下操作。

为表单字段创建一个类

public class Data {
    private String address;
    private String amount;

    public Data() {
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getAmount() {
        return amount;
    }

    public void setAmount(String amount) {
        this.amount = amount;
    }
}

在 GET Controller 中绑定(bind)一个新的 Data 对象,您可以在其中加载 HTML 表单

@RequestMapping("/")
 public String showBitcoinWallet() {
    model.addAttribute("data", new Data());
    return "index";
}

以下表单将位于您的 index.jsp 页面中,其中 /send 是 Controller 将表单发布到何处的映射

<form:form id="send-form" modelAttribute="data" class="form-horizontal" action="/send" method="POST"> 

    <div class="modal-body">

        <spring:bind path="amount">
        <div class="form-group">
            <label for="amount" class="col-sm-2 control-label">Send</label>
            <div class="col-xs-4">
                <form:input path="amount" id="amount" name="amount" class="form-control" value="0"></form:input>
            </div>
            <div class="btc-col">
                <span>BTC</span>
            </div>
        </div>
        </spring:bind>

        <spring:bind path="address">
        <div class="form-group">
            <label for="address" class="col-sm-2 control-label">to</label>
            <div class="col-sm-10">
                <form:input path="address" id="address" name="address" class="form-control"></form:input>
            </div>
        </div>
        </spring:bind>
    </div>

    <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
        <button type="submit" class="btn btn-default">Send</button>
    </div>

</form:form>

以下 Controller 用于/send POST

@RequestMapping(value = "/send", method = RequestMethod.POST)
    public String sendMoney(Data data) {
        //here will be your code for send money and whatever you have to do..
        ...send(data.getAddress(), data.getAmount()); 
        return "redirect:/"; //here will the location where you want to redirect
    }

关于java - Spring Mvc 应用程序获取 - HTTP 状态 [404] – [未找到],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44536047/

相关文章:

java - 在java中继承类是否可以,即使它不适合这项工作

java - Android - 将文本框内容应用于 webview 的变量

java - Struts 标签中的 JSTL

java - Spring MVC 可重用 View 组件

Java,对象和方法之间的类型

java - JSP:多个查询和生成键的问题

java - 授权不起作用(Spring Security)

java - Spring MVC : @Value annotation with final variable

java - 创建、更新和获取其余端点中的相同/不同 DTO 对象?

java - 如何在 Struts 2 中向 Set 集合中插入一个值