注:本文只用注解来实现

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/中的


怎么说呢,这类流程图很多,但是核心都是一样的。
简单描述就是:前端发起请求,springMVC的核心类DispatcherServlet拦截,然后跳转到controller中,执行完成之后根据View控制器跳转到前端。

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控制器。
以上的配置就不详细写了,见SpringMVC配置流程
放在那里?放哪里都没关系,只要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的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 -->
<property name="prefix" value="/jsp/" />
<property name="suffix" value=".jsp" />
</bean>

每个action方法最后一行写return “页面名”,如return “success”,表示的就是跳转到success.jsp页面。

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/

以上几篇文章已经写的很详细了
1、方法基于junit、springmvc和spring-test

所以用maven的话pom.xml要引入
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>

2、@RunWith注解指定使用springJunit的测试运行器,
@ContextConfiguration注解指定测试用的spring配置文件的位置

4、 可以写一个BaseJunitTest,可以将

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration({ "classpath:spring-mvc.xml", "classpath:spring-mybatis.xml" })
public class BaseJunitTest {....}

写在baseJunitTest中,这样你任意一个test只需要继承他就行了
5、 this.mockMvc.perform(post("/user/showUser").param("name", "lawren").param("password", "123456").param("age","100"));是需要指定访问action方法的路径,如果有参数,还要将参数带上。

文章较为简陋,希望对大家有所帮助

SpringMVC总结的部分教程及使用方法的更多相关文章

  1. 巩固一下:SpringMVC详细示例实战教程

    一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 1 2 3 4 5 6 ...

  2. 史上最全最强SpringMVC详细示例实战教程

    一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 1 2 3 4 5 6 ...

  3. SpringMVC详细示例实战教程

    一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 1 2 3 4 5 6 ...

  4. 百度UEditor编辑器使用教程与使用方法

    我们在做网站的时候,网站后台系统一般都会用到web编辑器,今天笔者就给大家推荐一款百度UEditor编辑器.关于这款百度UEditor编辑器官网上也有简单的教程,不过看着比较费劲,今天笔者就跟大家分享 ...

  5. 【springmvc Request】 springmvc请求接收参数的几种方法

    通过@PathVariabl注解获取路径中传递参数 转载请注明出处:springmvc请求接收参数的几种方法 代码下载地址:http://www.zuida@ima@com/share/1751862 ...

  6. springmvc使用@ResponseBody返回json乱码解决方法

    1.springmvc 3.2以上的版本解决乱码的方法: 第一步:在配置中加入: <mvc:annotation-driven> <mvc:message-converters re ...

  7. 转:史上最全最强SpringMVC详细示例实战教程

    一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 <!--conf ...

  8. SpringMVC 前端获得定义JSON对象的方法

    SpringMVC 前端获得定义JSON对象的方法: 可以使用map进行对象的创建,这样就会解析成键值对,不需要为前端专门定义对象.

  9. SpringMVC详细示例实战教程(较全开发教程)

    SpringMVC学习笔记---- 一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于Spring ...

随机推荐

  1. tornado 增加日志模块

    log类 #!/usr/bin/env python # -*- coding:utf-8 -*- import logging.handlers class Logger(logging.Logge ...

  2. 1602A液晶

    液晶显示屏中,1602型算是比较简单的一种,据说和12864还是全兼容的.这两天学习的结果如下.一.1602里的存储器有三种:CGROM.CGRAM.DDRAM.CGROM保存了厂家生产时固化在LCM ...

  3. python pandas dataframe to_sql方法error及其解决

    今天遇到了一个问题,很是奇怪,自己也想了一个另类的方法将其解决了,现在将详细过程经过记录如下: 我在处理完一个dataframe之后,需要将其写回到数据库.这个dataframe比较大,共有53列,7 ...

  4. android入门,activity跳转,并传递message

    首先是布局文件,如下: activity_main.xml <?xml version="1.0" encoding="utf-8"?> <L ...

  5. VS2010中出现无法嵌入互操作类型(转)

    针对word或excel操作时,出现VS2010中,无法嵌入互操作类型“……”,请改用适用的接口的解决方法问了度娘,解决方法如出一辙:选中项目中引入的dll,鼠标右键,选择属性,把“嵌入互操作类型”设 ...

  6. ZipFile和ZipInputSteam解压zip文件

    最近有个需求,要接受上穿的zip文件,解压后读取里面的文件(应该还有目录),提前储备一下需要的知识. 贴在博客上,有需要的可以参考. ZipInputStream解压文件: @Test public ...

  7. iPhone的刷机 iPhone进UDF

    首先是进入udf出现问题.. 要点是 黑屏后按电源键到屏幕亮了+HOME键再一直按 按到黑屏 4秒左右后 放开HOME键 再按大概7秒就是udf界面了 不是界面~全黑的.你可以电源键是开不了机的. 然 ...

  8. UWP项目的包无法通过本地校验程序

    在UWP工程中,我们打出的包Appx需要通过本地的校验程序校验通过后才可以进行商店的提交.在校验程序汇报的不通过原因当中,除了显而易见的因为美术资源不规范.代码调用不合法API等原因之外,还有一些奇怪 ...

  9. 笔记整理——linux程序设计

    数据库 (2013/2/27 16:07:11) 线程 (2013/2/27 15:47:51)   信号 (2013/2/27 15:31:28)         消息队列.共享内存 (2013/2 ...

  10. Angular - - angular.bind、angular.bootstrap、angular.copy

    angular.bind 返回一个调用self的函数fn(self代表fn里的this).可以给fn提供参数args(*).这个功能也被称为局部操作,以区别功能. 格式:angular.bind(se ...