【问题标题】:How to send request from jsp to controller in Spring 4?如何在 Spring 4 中将请求从 jsp 发送到控制器?
【发布时间】:2016-10-07 14:09:10
【问题描述】:

我正在使用 Spring 4. 和 Hibernate 5

我想知道如何将请求从 jsp 页面传递到控制器。

我喜欢下面的页面。

我收到此错误:

*消息 /Spring_Hibernate_MVC/forgotPsw.do

说明请求的资源不可用。*

ForgotPassword.js

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Forgot Password</title>
</head>
<body>
    <div id="DivForgotPsw">
        <form action="forgotPsw.do" method="get">
            <table>
                <tr>
                    <th>Enter your email id.</th>
                </tr>
                <tr>
                    <td><input type="text" name="email"></td>
                </tr>
                <tr>
                    <td><input type="submit" value="Send"></td>
                </tr>
            </table>
    </div>
    </form>
</body>
</html>

hibernate.cfg.xml

<servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

ForgotPswController.java

@Component
@RequestMapping(name="/")
public class ForgotPswController {

    @Autowired
    private JavaMailSender javaMailSender;



    public ForgotPswController() {
        System.out.println(this.getClass().getSimpleName()+" created...");
    }

    @RequestMapping(value="/forgotPsw.do" , method = RequestMethod.GET)
    public void send( HttpServletRequest request){

        MimeMessage message = javaMailSender.createMimeMessage();
        MimeMessageHelper helper;

        try {
            helper = new MimeMessageHelper(message, true);
            helper.setSubject("Reset Your Jspiders Account.");
            helper.setTo(request.getParameter("email"));
            helper.setText("Hello User", true);   

            javaMailSender.send(message);

        } catch (MessagingException e) {


            e.printStackTrace();
        } 
    }
}

【问题讨论】:

    标签: spring-mvc request-mapping


    【解决方案1】:

    首先尝试获取完整的请求以进行检查。

    String req = request.getQueryString();
    

    在这个请求中,参数可能会与一些命名空间一起保存。那你应该知道原因了。

    使用

    <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
    <form:from ... modelAttribute=forgotPsw>
    <form:input path="email"/>
    ...
    

    可能更容易将表单转换为对象并获取一些信息。

    @RequestMapping(value="/forgotPsw.do" , method = RequestMethod.GET)
    public void send(@ModelAttribute("forgotPsw")ForgotPsw forgotPsw){
    
    class ForgotPsw {
    
        private String email;
        //getter and setter
    }
    

    【讨论】:

    • 我的请求它没有出现在控制器上,我认为这是问题......???怎么解决。如果请求没有到来,我如何检查 request.getQueryString();
    • 所以如果我理解你 ForgotPassword.js 是另一个应用程序。在这种情况下,如果我是您,我会尝试通过此函数 getQueryString 调试请求参数,然后您应该查看参数邮件是否存在。它应该是这样的“email=test@test.com”。如果你没有,说明这个请求可能有问题。
    猜你喜欢
    • 2016-03-16
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-20
    • 2016-02-24
    相关资源
    最近更新 更多