2016-05-29 44 views
0

您能帮我弄清楚如何使用我的控制器调用登录页面吗?Spring MVC简单控制器示例

这里是我的代码:

package com.mvc.demo; 

public class Emp { 
    private String name; 
    private String password; 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getPassword() { 
     return password; 
    } 

    public void setPassword(String password) { 
     this.password = password; 
    } 

} 

MvcDemo.java(这是我的控制器;只是调用登录页面)

package com.mvc.demo; 

import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 

public class MvcDemo { 

    @RequestMapping(value="/login", method = RequestMethod.GET) 
    public String showForm(Emp em) { 
      return "login"; 
    } 
} 

调度-servlet.xml中

<context:component-scan base-package="com.mvc.demo" /> 
<mvc:annotation-driven /> 
<beans> 
<bean id="viewResolver" 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix" value="/jsp/" /> 
    <property name="suffix" value=".jsp" /> 
</bean> 
</beans> 

网.xml

<servlet> 
    <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> 

<welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
</welcome-file-list> 

的login.jsp

<form:form action="#" method = "post" modelAttribute="emp"> 
     <form:label path="username">Enter your user-name</form:label> 
     <form:input id="username" name="username" path="name" /><br> 
     <form:label path="username">Please enter your password</form:label> 

     <form:password id="password" name="password" path="password" /><br> 

     <input type="submit" value="Submit" /> 
</form:form> 

项目结构:

MvcDemo 
    JavaResources 
     src 
     com.mvc.demo 
    WebContent 
     jsp 
     login.jsp 
    WEB-INF 
    lib 
    web.xml 
    dispatcher-servlet.xml 
    index.jsp 
+0

你访问http://本地主机:8080 /登录?你有错误吗? – Daniel

+0

非常感谢Joao。请在上面找到我的配置命名为dispatcher-servlet.xml –

+0

为什么不去github,从spring示例https://github.com/spring-projects/spring-mvc-showcase下载工作演示,或者可以使用google https: //www.google.co.in/search?q=github+spring+mvc+hello+world – tgkprog

回答

0

它不一样在你的代码,当你点击网址与本地主机:8080/Mvc_Demo /登录就必须显示你的login.jsp, 希望这可以解决你的问题。

package com.mvc.demo; 

    import org.springframework.web.bind.annotation.RequestMapping; 
    import org.springframework.web.bind.annotation.RequestMethod; 

    import org.springframework.web.servlet.ModelAndView; 

    public class MvcDemo { 
    @RequestMapping(value="/login", method = RequestMethod.GET) 

    public String showForm() 
    { 
     ModelAndView mv = new ModelAndView("login"); 
     return mv; 


     } 
    } 
+0

非常感谢Punjan,但它不工作,即使你返回modelandview但方法期待String类型。我已经改变和执行,即使它似乎相同的问题http状态404错误 –

+0

其不工作 –

1

您缺少控制器类上的@Controller注释。 Spring除非通过使用注释实例化控制器,否则不会为url创建处理程序。

+0

谢谢satya仍然得到山姆错误HTTP 404 MvcDemo /登录未找到 –

+0

你看到任何映射/日志登录? –

+0

雅如初始化Spring框架servlet'dispatcher' –

0

试试这个代码:

package com.mvc.demo; 

import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 

@Controller 
public class MvcDemo { 

    // To call the view for login 
    @RequestMapping(value = "/login", method = RequestMethod.GET) 
    public ModelAndView login() { 
     return new ModelAndView("login","newEmp", new Emp()); 
    } 

    // To call the validate login after submit 
    @RequestMapping(value = "/user-login", method = RequestMethod.POST) 
    @ResponseBody 
    public ModelAndView userLogin(Emp emp) { 
     //TODO check 'emp' object to validate user 
     return new ModelAndView("home"); 
    } 


}