一个简单的SpringMVC Demo

最近开始学习SpringMVC框架,鼓捣了几天,成功搭建了一个简单的Demo,可以实现用户注册和登录(PS:新手搭建,有问题欢迎留言指出๑乛◡乛๑)。
开发环境:
IDE:MyEclipse Professional 2014
JDK:1.8.0_144 x64
Tomcat:8.0
SpringMVC:4.2.0
1.SpringMVC环境配置
搭建SpringMVC环境,SpringMVC的jar包当然是必不可少的。登录http://repo.springsource.org/libs-release-local/站点,该站点有SpringMVC各版本的压缩包。在这里我下载的是spring-framework-4.2.0.RELEASE。
除了SpringMVC的jar包,因为Spring的核心容器依赖于common-logging的jar包,因此还需要下载common-logging.jar。

进入MyEclipse创建Dynamic Web Project工程,工程名是UserTset。将刚刚下载的SpringMVC的压缩包解压后,把libs目录下的jar包和下载的common-logging.jar拷贝到WebRoot/WEB-INF/lib文件夹下,在主界面选中UserTest节点,按F5刷新,可以看到如图的界面,至此SpringMVC框架所需的类库已经导入。

一个简单的SpringMVC Demo

2.配置前端控制器DispatcherServlet
DispatcherServlet在SpringMVC中是集中访问点,负责分派调度工作。因此我们需要告诉Web容器,我们将使用DispatcherServlet,并将URL映射到DispatcherServlet。

 

 
  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  3. xmlns="http://xmlns.jcp.org/xml/ns/javaee"

  4. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee

  5. http://xmlns.jcp.org.xml/ns/javaee/web-app_3_1.xsd"

  6. id="WebApp_ID" >

  7.  
  8. <servlet>

  9. <!-- 声明Dispatcher,告诉Web容器我们将使用springMVC的DispatcherServlet -->

  10. <servlet-name>dispatcher</servlet-name>

  11. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

  12. <!-- DispatcherServlet在加载时会需要SpringMVC的配置文件,因此需要声明该配置文件的位置。 -->

  13. <!-- 如果不配置该项,则应用会默认的去WEB-INF下寻找名字为[servlet-name]-servlet.xml的文件。 -->

  14. <init-param>

  15. <param-name>contextConfigLocation</param-name>

  16. <param-value>/WEB-INF/springmvc-config.xml</param-value>

  17. </init-param>

  18. </servlet>

  19. <!-- 配置url-pattern,设置为 / 拦截所有的URL请求,并映射到dispatcher -->

  20. <servlet-mapping>

  21. <servlet-name>dispatcher</servlet-name>

  22. <url-pattern>/</url-pattern>

  23. </servlet-mapping>

  24.  
  25.  
  26. </web-app>

3.配置springmvc-config.xml

 

 
  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <beans xmlns="http://www.springframework.org/schema/beans"

  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  4. xmlns:mvc="http://www.springframework.org/schema/mvc"

  5.  
  6. xmlns:context="http://www.springframework.org/schema/context"

  7. xsi:schemaLocation="

  8. http://www.springframework.org/schema/beans

  9. http://www.springframework.org/schema/beans/spring-beans-4.2.xsd

  10. http://www.springframework.org/schema/mvc

  11. http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd

  12. http://www.springframework.org/schema/context

  13. http://www.springframework.org/schema/context/spring-context-4.2.xsd">

  14.  
  15. <!-- 使用基于注解的控制器,spring会自动扫描base-package下的子包和类,如果扫描到会把这些类注册为bean-->

  16. <context:component-scan base-package="per.cuttle.UserTest"/>

  17.  
  18. <!-- 配置处理映射器和处理器适配器 在Spring4.0后,不配置,会默认加载-->

  19. <!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> -->

  20. <!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/> -->

  21.  
  22. <!-- 配置视图解析器,经过视图解析器后,视图的的完成路径为[prefix]+返回的视图字符串+[suffix] -->

  23. <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">

  24. <property name="prefix">

  25. <value>/WEB-INF/view/</value>

  26. </property>

  27. <property name="suffix">

  28. <value>.jsp</value>

  29. </property>

  30. </bean>

  31. </beans>

 

4.创建User实体类
创建包per.cuttle.domain,在该包下创建了User的实体类。
在此简单的设置了3个属性loginname,password,username。

 
  1. package per.cuttle.domain;

  2.  
  3.  
  4. public class User {

  5.  
  6.  
  7. private String loginname;

  8. private String password;

  9. private String username;

  10.  
  11. public User(){

  12.  
  13. }

  14.  
  15. public String getLoginname(){

  16. return loginname;

  17. }

  18. public void setLoginname(String loginname){

  19. this.loginname=loginname;

  20. }

  21. public String getPassword(){

  22. return password;

  23. }

  24. public void setPassword(String password){

  25. this.password=password;

  26. }

  27. public String getUsername(){

  28. return username;

  29. }

  30. public void setUsername(String username){

  31. this.username=username;

  32. }

  33. }

5.创建控制器
创建包per.cuttle.UserTest(ps:前面在springmvc-config.xml中注解扫描的是该包),在该包下创建类UserController。
由于没有链接数据库,因此在注册时使用List模拟数据库存储。

 

 
  1. package per.cuttle.UserTest;

  2.  
  3.  
  4. import java.util.ArrayList;

  5. import java.util.List;

  6.  
  7.  
  8. import org.apache.commons.logging.Log;

  9. import org.apache.commons.logging.LogFactory;

  10. import org.springframework.stereotype.Controller;

  11. import org.springframework.ui.Model;

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

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

  14. import org.springframework.web.bind.annotation.RequestParam;

  15.  
  16.  
  17. import per.cuttle.domain.User;

  18.  
  19.  
  20. @Controller

  21. @RequestMapping(value="/user")

  22. public class UserController {

  23.  
  24. private static List<User> userList;

  25.  
  26. public UserController(){

  27. userList = new ArrayList<User>();

  28. }

  29.  
  30. private static final Log logger =LogFactory.getLog(UserController.class);

  31.  
  32. @RequestMapping(value="/registerForm",method=RequestMethod.GET)

  33. public String registerForm(){

  34. return "registerForm";

  35. }

  36.  
  37.  
  38. @RequestMapping(value="/register",method=RequestMethod.POST)

  39. public String register(@RequestParam("loginname")String loginname,

  40. @RequestParam("password")String password,

  41. @RequestParam("username")String username){

  42. User user = new User();

  43. user.setLoginname(loginname);

  44. user.setPassword(password);

  45. user.setUsername(username);

  46. userList.add(user);

  47.  
  48. return "loginForm";

  49. }

  50.  
  51. @RequestMapping(value="/login")

  52. public String login(

  53. @RequestParam("loginname")String loginname,

  54. @RequestParam("password")String password,

  55. Model model){

  56. logger.info("loginname:"+loginname+" password:"+password);

  57.  
  58. for(User user : userList){

  59. if(user.getLoginname().equals(loginname)&&

  60. user.getPassword().equals(password)){

  61. model.addAttribute("user",user);

  62. return "welcome";

  63. }

  64. }

  65. return "loginForm";

  66. }

  67. }

6.创建相应的JSP文件
由于在springmvc-config.xml中prefix的值为/WEB-INF/view/,因此我们在web-inf目录下创建view文件夹,将对应的JSP文件放在该文件夹下。JSP文件的名字,应于视图名称对应。

一个简单的SpringMVC Demo

7.测试
将本应用部署到Tomcat上,在浏览器中输入http://localhost:8080/UserTest/user/registerForm进行访问。

一个简单的SpringMVC Demo

注册界面

一个简单的SpringMVC Demo

注册完后跳转登录界面

一个简单的SpringMVC Demo

第一次发博客有点小紧张,这个编辑器用的也不是很熟悉,代码格式一直不对,发了好多次,见谅。有需要源代码的请留言。博文中如有错误望可以指出。

 

转载自:https://blog.****.net/lml0703/article/details/77949764