Skip to content

Commit 3cb327a

Browse files
committed
注解和非注解方式
1 parent cd85b48 commit 3cb327a

File tree

7 files changed

+224
-11
lines changed

7 files changed

+224
-11
lines changed

WebRoot/WEB-INF/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/classes/

WebRoot/WEB-INF/classes/springmvc.xml

Lines changed: 47 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,61 @@
1616
http://www.springframework.org/schema/tx
1717
http://www.springframework.org/schema/tx/spring-tx.xsd">
1818

19-
<!-- 配置Handler -->
19+
<!-- 配置Handler
2020
<bean name="/queryItems.action" class="ssm.controller.ItemsController1" />
21+
<bean id="itemsController1" class="ssm.controller.ItemsController1" />
22+
<bean id="itemsController2" class="ssm.controller.ItemsController2" />
23+
-->
2124

2225
<!-- 处理器适配器:HandlerAdapter
2326
所有处理器适配器都实现HandlerAdapter接口
2427
-->
25-
<!-- SimpleControllerHandlerAdapter适配器能执行实现了Controller接口的Handler -->
28+
<!-- 2. HttpRequestHandlerAdapter适配器能执行实现了HttpRequestHandler接口的Handler
29+
<bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter" />
30+
-->
31+
32+
<!-- 1. SimpleControllerHandlerAdapter适配器能执行实现了Controller接口的Handler
2633
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
34+
-->
2735

28-
<!-- 配置处理器映射器
29-
将bean的name作为url进行查找,需要在配置Handler时指定beanname(就是url)
30-
-->
36+
37+
<!-- 配置处理器映射器1:将bean的name作为url进行查找,需要在配置Handler时指定beanname(就是url)
3138
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
39+
-->
40+
41+
<!-- 配置处理器映射器2,简单url映射
42+
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
43+
<property name="mappings">
44+
<props> -->
45+
<!-- 对itemsController1进行url映射,url是/queryItems1.action -->
46+
<!--
47+
<prop key="/queryItems1.action">itemsController1</prop>
48+
<prop key="/queryItems2.action">itemsController2</prop>
49+
</props>
50+
</property>
51+
</bean>
52+
-->
53+
54+
<!--
55+
<bean class="ssm.controller.ItemsController3"/>
56+
-->
57+
58+
<!-- 使用注解的映射器和注解的适配器。(注解的映射器和注解的适配器必须配对使用)-->
59+
<!-- 配置注解适配器
60+
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
61+
-->
62+
<!-- 配置注解映射器
63+
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
64+
-->
65+
66+
<!-- 使用 mvc:annotation-driven代替上边注解映射器和注解适配器配置
67+
mvc:annotation-driven默认加载很多的参数绑定方法,比如json转换解析器就默认加载了,
68+
如果使用mvc:annotation-driven不用配置上边的RequestMappingHandlerMapping和RequestMappingHandlerAdapter
69+
实际开发时使用mvc:annotation-driven
70+
-->
71+
<mvc:annotation-driven></mvc:annotation-driven>
72+
<!-- 也不用配置具体的Controller了,直接使用这个进行扫描包即可,也可以扫描service -->
73+
<context:component-scan base-package="ssm.controller"></context:component-scan>
3274

3375
<!-- 配置视图解析器
3476
进行jsp解析,默认使用jstl标签,classpath下得有jstl的包
Binary file not shown.

config/springmvc.xml

Lines changed: 47 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,61 @@
1616
http://www.springframework.org/schema/tx
1717
http://www.springframework.org/schema/tx/spring-tx.xsd">
1818

19-
<!-- 配置Handler -->
19+
<!-- 配置Handler
2020
<bean name="/queryItems.action" class="ssm.controller.ItemsController1" />
21+
<bean id="itemsController1" class="ssm.controller.ItemsController1" />
22+
<bean id="itemsController2" class="ssm.controller.ItemsController2" />
23+
-->
2124

2225
<!-- 处理器适配器:HandlerAdapter
2326
所有处理器适配器都实现HandlerAdapter接口
2427
-->
25-
<!-- SimpleControllerHandlerAdapter适配器能执行实现了Controller接口的Handler -->
28+
<!-- 2. HttpRequestHandlerAdapter适配器能执行实现了HttpRequestHandler接口的Handler
29+
<bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter" />
30+
-->
31+
32+
<!-- 1. SimpleControllerHandlerAdapter适配器能执行实现了Controller接口的Handler
2633
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
34+
-->
2735

28-
<!-- 配置处理器映射器
29-
将bean的name作为url进行查找,需要在配置Handler时指定beanname(就是url)
30-
-->
36+
37+
<!-- 配置处理器映射器1:将bean的name作为url进行查找,需要在配置Handler时指定beanname(就是url)
3138
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
39+
-->
40+
41+
<!-- 配置处理器映射器2,简单url映射
42+
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
43+
<property name="mappings">
44+
<props> -->
45+
<!-- 对itemsController1进行url映射,url是/queryItems1.action -->
46+
<!--
47+
<prop key="/queryItems1.action">itemsController1</prop>
48+
<prop key="/queryItems2.action">itemsController2</prop>
49+
</props>
50+
</property>
51+
</bean>
52+
-->
53+
54+
<!--
55+
<bean class="ssm.controller.ItemsController3"/>
56+
-->
57+
58+
<!-- 使用注解的映射器和注解的适配器。(注解的映射器和注解的适配器必须配对使用)-->
59+
<!-- 配置注解适配器
60+
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
61+
-->
62+
<!-- 配置注解映射器
63+
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
64+
-->
65+
66+
<!-- 使用 mvc:annotation-driven代替上边注解映射器和注解适配器配置
67+
mvc:annotation-driven默认加载很多的参数绑定方法,比如json转换解析器就默认加载了,
68+
如果使用mvc:annotation-driven不用配置上边的RequestMappingHandlerMapping和RequestMappingHandlerAdapter
69+
实际开发时使用mvc:annotation-driven
70+
-->
71+
<mvc:annotation-driven></mvc:annotation-driven>
72+
<!-- 也不用配置具体的Controller了,直接使用这个进行扫描包即可,也可以扫描service -->
73+
<context:component-scan base-package="ssm.controller"></context:component-scan>
3274

3375
<!-- 配置视图解析器
3476
进行jsp解析,默认使用jstl标签,classpath下得有jstl的包

src/ssm/controller/ItemsController1.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public ModelAndView handleRequest(HttpServletRequest request,
3737
ModelAndView modelAndView = new ModelAndView();
3838

3939
//相当于request的setAttribute,在jsp页面中通过itemsList取数据
40-
modelAndView.addObject("itemaList", itemsList);
40+
modelAndView.addObject("itemsList", itemsList);
4141

4242
//指定视图
4343
modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package ssm.controller;
2+
3+
import java.io.IOException;
4+
import java.util.ArrayList;
5+
import java.util.List;
6+
7+
import javax.servlet.ServletException;
8+
import javax.servlet.http.HttpServletRequest;
9+
import javax.servlet.http.HttpServletResponse;
10+
11+
import org.springframework.web.HttpRequestHandler;
12+
13+
14+
import ssm.po.Items;
15+
16+
public class ItemsController2 implements HttpRequestHandler {
17+
18+
@Override
19+
public void handleRequest(HttpServletRequest request, HttpServletResponse response)
20+
throws ServletException, IOException {
21+
//实际中是调用service查找数据库,查询商品列表,这里直接使用静态数据来模拟了
22+
List<Items> itemsList = new ArrayList<Items>();
23+
//向list中填充静态数据
24+
Items items_1 = new Items();
25+
items_1.setName("联想笔记本");
26+
items_1.setPrice(6000f);
27+
items_1.setDetail("ThinkPad T430 联想笔记本电脑!");
28+
29+
Items items_2 = new Items();
30+
items_2.setName("苹果手机");
31+
items_2.setPrice(5000f);
32+
items_2.setDetail("iPhone6苹果手机!");
33+
34+
itemsList.add(items_1);
35+
itemsList.add(items_2);
36+
37+
//设置模型数据
38+
request.setAttribute("itemsList", itemsList);
39+
40+
//设置转发的视图
41+
request.getRequestDispatcher("/WEB-INF/jsp/items/itemsList.jsp").forward(request, response);
42+
43+
//使用此方法可以通过修改response,设置响应的数据格式,比如响应json数据
44+
/*
45+
response.setCharacterEncoding("utf-8");
46+
response.setContentType("application/json;charset=utf-8");
47+
response.getWriter().write("json串");*/
48+
}
49+
}
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
package ssm.controller;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
import org.springframework.stereotype.Controller;
7+
import org.springframework.web.bind.annotation.RequestMapping;
8+
import org.springframework.web.servlet.ModelAndView;
9+
10+
import ssm.po.Items;
11+
12+
@Controller
13+
public class ItemsController3 {
14+
15+
// 商品查询列表
16+
// @RequestMapping实现 对queryItems方法和url进行映射,一个方法对应一个url
17+
// 一般建议将url和方法写成一样
18+
@RequestMapping("/queryItems")
19+
public ModelAndView queryItems() throws Exception {
20+
21+
// 实际中是调用service查找数据库,查询商品列表,这里直接使用静态数据来模拟了
22+
List<Items> itemsList = new ArrayList<Items>();
23+
// 向list中填充静态数据
24+
Items items_1 = new Items();
25+
items_1.setName("联想笔记本");
26+
items_1.setPrice(6000f);
27+
items_1.setDetail("ThinkPad T430 联想笔记本电脑!");
28+
29+
Items items_2 = new Items();
30+
items_2.setName("苹果手机");
31+
items_2.setPrice(5000f);
32+
items_2.setDetail("iPhone6苹果手机!");
33+
34+
itemsList.add(items_1);
35+
itemsList.add(items_2);
36+
37+
// 返回ModelAndView
38+
ModelAndView modelAndView = new ModelAndView();
39+
40+
// 相当于request的setAttribute,在jsp页面中通过itemsList取数据
41+
modelAndView.addObject("itemsList", itemsList);
42+
43+
// 指定视图
44+
modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");
45+
46+
return modelAndView;
47+
}
48+
49+
@RequestMapping("/queryItems2")
50+
public ModelAndView queryItems2() throws Exception {
51+
52+
// 实际中是调用service查找数据库,查询商品列表,这里直接使用静态数据来模拟了
53+
List<Items> itemsList = new ArrayList<Items>();
54+
// 向list中填充静态数据
55+
Items items_1 = new Items();
56+
items_1.setName("联想笔记本2");
57+
items_1.setPrice(6000f);
58+
items_1.setDetail("ThinkPad T430 联想笔记本电脑!");
59+
60+
Items items_2 = new Items();
61+
items_2.setName("苹果手机2");
62+
items_2.setPrice(5000f);
63+
items_2.setDetail("iPhone6苹果手机!");
64+
65+
itemsList.add(items_1);
66+
itemsList.add(items_2);
67+
68+
// 返回ModelAndView
69+
ModelAndView modelAndView = new ModelAndView();
70+
71+
// 相当于request的setAttribute,在jsp页面中通过itemsList取数据
72+
modelAndView.addObject("itemsList", itemsList);
73+
74+
// 指定视图
75+
modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");
76+
77+
return modelAndView;
78+
}
79+
}

0 commit comments

Comments
 (0)