springmvc环境的搭建

最近应公司要求,用了2天时间学了springmvc的搭建,就简单总结一下:

springmvc和struts2的比较,因为我是学过struts的,它们都是基于mvc模式而设计的web层框架

它们最大的区别:

1、入口 

spring mvc的入口是servlet,而struts2是filter

(这里要指出,filter和servlet是不同的。以前认为filter是servlet的一种特殊),

这样就导致了二者的机制不同,这里就牵涉到servlet和filter的区别了。

 2、主要机制

springmvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,参数的传递是直接注入到方法中的,是该方法独有的。

struts2是类级别的拦截, 一个类对应一个request上下文, struts是在接受参数的时候,可以用属性来接受参数, 这就说明参数是让多个方法共享的,

这也就无法用注解或其他方式标识所属方法了

intercepter的实现机制。struts有以自己的interceptor机制,spring mvc 用的是独立的AOP方式。这样导致struts的配置文件量还是比spring mvc大,

虽然struts的配置能继承,spring mvc使用更加简洁。


springmvc环境的搭建:

建立一个web项目:

首先在目录/WEB-INF/web.xml配置如下内容:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
 xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
 
  <!-- 配置前端控制器 -->
  <servlet>
   <servlet-name>springmvc</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
   <!-- 服务器开启的时候,SpringMVC也开启 -->
   <load-on-startup>1</load-on-startup>
  </servlet>
 
  <servlet-mapping>
   <servlet-name>springmvc</servlet-name>
   <url-pattern>*.action</url-pattern>
  </servlet-mapping>
 
  <servlet-mapping>
   <servlet-name>springmvc</servlet-name>
   <!-- mvc的名称可以随便取, 这样前台可以通过 /项目名/mvc/控制器指定的name名称访问 -->
   <url-pattern>/mvc/*</url-pattern>
  </servlet-mapping>
 
</web-app>

 

然后还是/WEB-INF/springmvc-servlet.xml(注:该文件名是[servletname]-servlet.xml),内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
 
 <!-- 配置controller,由spring来管理controller,前台通过name指定的值来获取访问相应的controller,
 因为ID不支持,后面action要和servlet中配置的后置相同 -->
 <bean class="com.controller.UserController" name="/list.action"></bean>
 
 <!-- 配置框架提供的视图解析器,通过配置前缀和后缀规则来解析,ModelAndView -->
 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="prefix" value="/WEB-INF/jsp/"></property>
  <property name="suffix" value=".jsp"></property>
 </bean>
 
</beans>

 

 

Controller层

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
/**
 * 基于注解的SpringMVC+Hibernate3.6的CRUD
 * @author Saiteam
 *
 */
@Controller
public class UserController {
     
    private UserDaoImpl userDao=new UserDaoImpl();
     
    @RequestMapping(value="/list.action")
    public String list(HttpServletRequest request){
        List<User> user = userDao.list();
        request.setAttribute("users", user);
        return "list";
    }
    @RequestMapping(value="/saveForward.action")
    public String saveForward(HttpServletRequest request){
        return "add";
    }
    @RequestMapping(value="/add.action")
    public String add(HttpServletRequest request) throws Exception{
        request.setCharacterEncoding("UTF-8");
        User user = new User();
        user.setName(request.getParameter("name"));
        user.setPassword(request.getParameter("password"));
        user.setSex(request.getParameter("sex"));
        user.setAddress(request.getParameter("address"));
        user.setPhone(request.getParameter("phone"));
        user.setEmail(request.getParameter("email"));
        userDao.save(user);
        request.setAttribute("users", userDao.list());
        return "list";
    }
     
    @RequestMapping(value="/delete.action")
    public String delete(HttpServletRequest request){
        int id = Integer.parseInt(request.getParameter("id"));
        userDao.delete(id);
        request.setAttribute("users", userDao.list());
        return "list";
    }
     
    @RequestMapping(value="/update.action")
    public String update(HttpServletRequest request) throws Exception{
        request.setCharacterEncoding("UTF-8");
        User user = new User();
        user.setId(Integer.parseInt(request.getParameter("id")));
        user.setName(request.getParameter("name"));
        user.setPassword(request.getParameter("password"));
        user.setSex(request.getParameter("sex"));
        user.setAddress(request.getParameter("address"));
        user.setPhone(request.getParameter("phone"));
        user.setEmail(request.getParameter("email"));
        userDao.update(user);
        request.setAttribute("users", userDao.list());
        return "list";
    }
     
    @RequestMapping(value="/get.action")
    public String get(HttpServletRequest request){
        int id = Integer.parseInt(request.getParameter("id"));
        request.setAttribute("user", userDao.get(id));
        return "update";
    }
    /**
     * 登陆功能
     * @param request
     * @return
     * @throws Exception
     */
    @RequestMapping(value="login.action")
    public String login(HttpServletRequest request) throws Exception{
        request.setCharacterEncoding("UTF-8");
        String name = request.getParameter("name");
        String password = request.getParameter("password");
         
        //测试
        System.out.println("-------name-----------"+name);
        System.out.println("-------password-----------"+password);
         
        if(name != null && !name.equals("")){
            if(password != null && !password.equals("")){
                User model = userDao.login(name, password);
                //测试
                System.out.println("-------------model--------"+model);
                 
                if(model != null && !model.equals("")){
                        request.setAttribute("users", userDao.list());
                        return "list";
                }else{
                    request.setAttribute("error", "用户或密码错误!");
                    return "forward:/login.jsp";
                }
            }else{
                request.setAttribute("error", "密码不能为空!");
                return "forward:/login.jsp";
            }
        }else{
            request.setAttribute("error", "用户名不能为空!");
            return "forward:/login.jsp";
        }
         
    }
     
    //实现注册功能
    @RequestMapping(value="register.action")
    public String register(HttpServletRequest request) throws Exception{
        request.setCharacterEncoding("UTF-8");
        User user = new User();
        user.setName(request.getParameter("name"));
        user.setPassword(request.getParameter("password"));
        user.setSex(request.getParameter("sex"));
        user.setAddress(request.getParameter("address"));
        user.setPhone(request.getParameter("phone"));
        user.setEmail(request.getParameter("email"));
        userDao.save(user);
        return "forward:/index.jsp";
    }
     
     
    /**
     * 跳转到登陆页面
     * @param request
     * @return
     */
    @RequestMapping(value="loginForward.action")
    public String loginForwad(HttpServletRequest request){
        return "forward:/login.jsp";
    }
    /**
     * 转发到注册页面
     * @param request
     * @return
     */
    @RequestMapping(value="rgf.action")
    public String registerForwad(HttpServletRequest request){
        return "forward:/register.jsp";
    }
     
}

 service层

 jsp页面自己写

posted @   吴小雨  阅读(305)  评论(0编辑  收藏  举报
编辑推荐:
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
阅读排行:
· 开发的设计和重构,为开发效率服务
· 从零开始开发一个 MCP Server!
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
点击右上角即可分享
微信分享提示