SpringMVC总结的部分教程及使用方法

注:本文只用注解来实现

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方法的路径,如果有参数,还要将参数带上。

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

时间: 2025-01-31 08:49:19

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

学java教程之普通方法重载

学编程吧学java教程之普通方法重载发布了,欢迎通过xuebiancheng8.com来访问 先来看什么是普通方法重载呢,先来看一个例子 public class Person{ String username; int age; public void hello(){ System.out.println("Hello"); } public void hello(String username){ System.out.println("你好"+usernam

SpringMVC详细示例实战教程

一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <!--configure the setting of springmvcDispatcherServlet and configure the mapping--> <servlet>     <servlet-name>

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

一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <!--configure the setting of springmvcDispatcherServlet and configure the mapping--> <servlet>     <servlet-name>

项目记录:spring+springmvc 项目中 @Transactional 失效的解决方法

第一步,修改spring的配置文件和springmvc的配置文件 --------------------------------applicationContext.xml <context:annotation-config/>  <context:component-scan base-package="com.xxx"> <context:exclude-filter type="annotation" expression=&

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

一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 1 <!--configure the setting of springmvcDispatcherServlet and configure the mapping--> 2 <servlet> 3 <servlet-name>springmvc</servlet-name> 4

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

SpringMVC学习笔记---- 一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 <!--configure the setting of springmvcDispatcherServlet and configure the mapping--> <servlet> <servlet-name>springmvc</servlet

springmvc请求接收参数的几种方法

通过@PathVariabl注解获取路径中传递参数 转载请注明出处:springmvc请求接收参数的几种方法 代码下载地址:http://www.zuidaima.com/share/1751862044773376.htm JAVA [java] view plaincopy @RequestMapping(value= " /{id}/{str} " ) public ModelAndView helloWorld(@PathVariable String id, @PathVar

Swift2.0语言教程之类的方法

Swift2.0语言教程之类的方法 Swift2.0语言的方法 方法其实就是函数,只不过它被定义在了类中.在Swift中,根据被使用的方式不同,方法分为了实例方法和类型方法两种.这两种方法的定义也和Objective-C是不同的.本节依次讲解这两种方法. Swift2.0语言的实例方法 实例方法被定义在类中,但是由类的实例调用.所以,这类方法被称为实例方法.实例方法和函数一样,分为了不带参数和带参数两种.以下依次讲解这两种方法的使用. 1.不带参数的实例方法 不带参数的实例方法定义和函数的是一样

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

我们在做网站的时候,网站后台系统一般都会用到web编辑器,今天笔者就给大家推荐一款百度UEditor编辑器.关于这款百度UEditor编辑器官网上也有简单的教程,不过看着比较费劲,今天笔者就跟大家分享一下百度UEditor编辑器使用教程与使用方法,希望对大家有所帮助. 第一:百度UEditor编辑器的官方下载地址 ueditor 官方地址:http://ueditor.baidu.com/website/index.html 开发文档地址:http://ueditor.baidu.com/web