注:本文只用注解来实现

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. windows下查找指定端口被哪个程序占用

    在Windows环境下,用netstat命令查看某个端口号是否占用,为哪个进程所占用. eg.查看端口号为61078被哪个程序占用 1.查看端口号为61079被哪个PID所占用:Netstat –an ...

  2. github上forck一个分支之后,如何和主分支同步

    github forck一个分之后,如果过一段时间就会和主分支的差异比较大. 这样提交pr的时候 就会冲突,这个时候我们就需要和主分支同步代码 git remote add upstream git@ ...

  3. memcache和memcached之间的区别和联系

    memcache和memcached区别: Memcache是什么?Memcache是一个自由和开放源代码.高性能.分配的内存对象缓存系统.用于加速动态web应用程序,减轻数据库负载.它可以应对任意多 ...

  4. Java学习(一)

    各种原因就开始java开发快一个月了.一直也没有正式记录一下...现在开始..O(∩_∩)O~.... 先小结一下学习以来遇到的几个问题: 1.myeclipse的常用快捷键: F2当鼠标放在一个标记 ...

  5. 报错:Can't bind to local 8647 for debugger

    修改8600为8601,并且勾上Use ADBHOST

  6. js判断MAC地址

    function white_mac_FormCheck(mac)    {           var temp = /[A-Fa-f0-9]{2}:[A-Fa-f0-9]{2}:[A-Fa-f0- ...

  7. c# silverlight

    分享 tsc 条码打印机 打印控件 调用方法 , c# silverlight 下载 TSCLIB.dll http://download.csdn.net/detail/peiyu_peiyu/47 ...

  8. ZOJ-2343-Robbers

    题目链接 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1398 题意: 输入t 有t个测试用例每个测试用例第一行输入三个数n, ...

  9. eclipse中的Java项目导出成为一个可以直接双击运行的jar文件

    1. 选择要到处JAR文件的工程,右键选择“Export” 2. 选择“Java-->Runnable JAR file”,点击“Next”: 3. 在“Launch configuration ...

  10. CodeForces758A

    A. Holiday Of Equality time limit per test:1 second memory limit per test:256 megabytes input:standa ...