如何在Spring中映射Request参数?

时间:2013-03-22 07:22:36

标签: java spring spring-mvc spring-security

我正在使用spring MVC。用户注册后,将向用户帐户发送电子邮件。

这样工作正常..而且我还将用户ID加密到用户电子邮件,为此我写了一个模板..

<bean id="activateAccountTemplate" class="org.springframework.mail.SimpleMailMessage">
    <property name="subject" value="Account activation" />
    <property name="text">
        <value>
        <![CDATA[
            <html><body><p>Dear %s</p><p>Click <a href="http://localhost:8080/EClass/home?a=%s">here</a> to activate your account.</p></body></html>
        ]]>
        </value>
    </property>
</bean>

当用户收到电子邮件并点击激活时......网址就像这样......

http://localhost:8080/EClass/home?a=tdpTA3Dz8DYSI+9F/DpMxmxGD/a1Kl+3oYqXc1NNH0U=

我希望得到这个加密的用户ID,为此我正在编写方法..

    @Controller
public class HomeController {

    @RequestMapping(value="home", method=RequestMethod.GET)
    public String home(Model model) throws Exception {
        model.addAttribute(FormType.LOGIN.name(), FormType.LOGIN.getNewInstance());
        model.addAttribute(FormType.SIGNUP.name(), FormType.SIGNUP.getNewInstance());
        return "home";
    }

    @RequestMapping(value="active", method=RequestMethod.GET)
    public String active(@RequestParam("a") String activeCode) throws Exception {

        String userid = CryptUtil.decrypt(activeCode);
        System.out.println("User id Displayed ===="+userid);
        return "home";
    }   
}

但是在服务器控制台上什么也没发生...... 基本上我想获得userid并使用userid更新用户列Activate=Yes ..

请建议我..

3 个答案:

答案 0 :(得分:1)

您需要将RequestMapping映射到“home”:

@RequestMapping(value="/home", method=RequestMethod.GET)

答案 1 :(得分:1)

http://localhost:8080/EClass/home基本上会使用a作为参数调用控制器方法:

@RequestMapping(value="/home", method=RequestMethod.GET)
    public String home(Model model) throws Exception {
}

但基本上从您想要致电的问题

 @RequestMapping(value="/active", method=RequestMethod.GET)
    public String active(@RequestParam("a") String activeCode) throws Exception {
}

因此请将您的请求更改为

<html><body><p>Dear %s</p><p>Click <a href="http://localhost:8080/EClass/active?a=%s">here</a>

还在请求映射的value属性中指定/

答案 2 :(得分:0)

您的请求映射中缺少斜杠/。在方法级别的控制器级别处添加/。但不是两个..