注:本文只用注解来实现
SpringMVC 各种流程图流程图(其他的各种流程图)
jsp、xml、action 彼此之间的关系,都如何使用
spring-mvc.xml 如何配置,放在哪里?
action 中如何转发和重定向
action 如何跳转到 jsp
如何处理 ajax
如何给 action 做单元测试
SpringMVC 各种流程图流程图(其他的各种流程图)
网络上有各种流程图的画法,例如:
http://howtodoinjava.com/spring/spring-mvc/spring-mvc-hello-world-example / 中的
http://www.cnblogs.com/zbf1214/p/5265117.html 中的
还有 http://elf8848.iteye.com/blog/875830 / 中的
jsp、xml、action 彼此之间的关系,都如何使用
jsp 通过 url,例如 "user/getUser" 请求后台的 action/Controller,servlet 拦截 url,然后扫描所有的 action 及 action 中的方法上的注解是否有匹配的,一旦有匹配的,就执行该方法。如果没有匹配的怎么办?action 中的方法执行完了,return 一个字符串,servlet 启动视图控制器拦截,匹配到对应的页面。
spring-mvc.xml 如何配置,放在哪里?
前面的流程图,jsp、xml 和 action 之间的关系,全部要依靠 xml 文件的配置
如何配置:
1、 web.xml 配置 DispatcherServlet
2、 spring-mvc.xml 配置 action/controller 扫描位置
3、 spring-mvc.xml 配置 view 控制器。
以上的配置就不详细写了,见
放在那里?放哪里都没关系,只要 web.xml 中配置好 servlet 默认初始化扫描的 xml 位置即可
以上配置完了就行了吗?不行,既然用注解还需要注意以下几点:
1、jsp 如何写 url:例如 "user/showUser",user 表示哪一个 action 类,"showUser" 表示 action 类中哪一个方法。
2、action 类、action 方法上如何写注解:
- @Controller
- @RequestMapping("/user")
- public class UserAction {...}
action 方法名上一行写
- @RequestMapping("/showUser")
- public String showUser(HttpServletRequest request,HttpServletResponse response,User user){
- ...
- }
action 如何跳转到 jsp
记得 spring-mvc.xml 文件中写如下:
- <bean
- class="org.springframework.web.servlet.view.InternalResourceViewResolver">
action 中如何使用 service
action 方法中如果只是简单逻辑还好,但是我们经常要操作数据库,那么就需要调用 service 类,service 类就要调用 DAO 类,DAO 要操作数据库。
在 action 方法中,如下:
- @Controller
- @RequestMapping("/user")
- public class UserAction {
- @Resource
- private IUserService userService;
- @RequestMapping("/showUser")
- public String showUser(HttpServletRequest request,HttpServletResponse response,User user){
- //将新增的用户信息存入数据库
- this.userService.insert(user);
- return "success";
- }
- }
简单描述,就是使用 @Resource 注入 service。
IUserService 是接口名,userService 是具体的实现类的注解名,在 IUserService 接口的实现类上一行,会写上 @Service("userService"),例如
- @Service("userService")
- public class UserServiceImpl implements IUserService {...}
service 如何写
- @Service("userService")
- public class UserServiceImpl implements IUserService {
- @Resource
- private IUserDAO userDao;
- @Override
- public User getUserById(int userId) {
- return this.userDao.selectByPrimaryKey(userId);
- }
- @Override
- public int deleteById(int userId) {
- return this.userDao.deleteByPrimaryKey(userId);
- }
- @Override
- public int insert(User user) {
- return this.userDao.insert(user);
- }
- @Override
- public int updateById(User user) {
- return this.userDao.updateByPrimaryKey(user);
- }
- }
基本没什么特殊,也是 @Resource 引入 DAO 接口,这里注意,userDao 随意命名,因为我用的是 mybatis,只需要一个 IDAO 接口,不需要实现类,mybatis 的映射文件就相当于一个实现类了
action 中如何转发和重定向
需求 1:action 方法执行完了,想要转发(上下文都带着)到另一个 action 方法
跳转到页面我么知道了,那么
return "forward:/question/getQuestion";
需求 2:重定向到另一个 action 中:
return "redirect:/question/getQuestion";
需求 3:防止表单重复提交,同需求 2
如何处理 ajax
http://blog.csdn.net/yangtang_newton/article/details/7525800
http://www.cnblogs.com/tingbogiu/p/5796199.html
http://elf8848.iteye.com/blog/875830 / 十五章节
简单说,基本就是后端用 response 的 io 流传递 json 到前端,不管你是 string、list 还是 map 都得想办法转换成 json。Springmvc 提供了中比较好的方式就是 springmvc 内置的 json 转换方式。建议采用。
如何给 action 做单元测试
https://my.oschina.net/u/142412/blog/311731、
http://www.cnblogs.com/wangtj-19/p/5821725.html、
http://blog.csdn.net/x1066988452/article/details/53519307
http://zhaozhiming.github.io/blog/2014/06/16/spring-mvc-unit-test-part-1/
4、 可以写一个 BaseJunitTest,可以将
- @RunWith(SpringJUnit4ClassRunner.class)@WebAppConfiguration@ContextConfiguration({
- "classpath:spring-mvc.xml",
- "classpath:spring-mybatis.xml"
- }) public class BaseJunitTest {....
- }
来源: http://www.cnblogs.com/javac/p/6413813.html