Spring MVC学习总结。

 公司项目用的Spring MVC。顺便学习学习。

其实框架并没有想象中的复杂。尤其对于初学者,总觉得SSH是一些很复杂的东西似的。其实对初学者来说能够用这些框架就足够了。在公司里也是,基本功能会用了就可以了。管他框架有多高深。尤其是Spring MVC 用起来比Struts2简单多了。不用多少配置文件。几个注解就搞定了。

首先,大家只要理解了MVC。其实所有的MVC 框架都是大同小异的。

无非是用户页面通过HttpServletRequest向后台传值。框架的配置文件会通过Request中的URL格式和参数找到相对应的Action(Spring mvc中叫Controller)。Action执行完成后或者返回一个新的页面或者只返回一些数据。可以放在Request中或者Session中在页面中取得。然后页面继续其他功能。(个人理解!)

先看一下Spring MVC 的处理流程:

1.客户发出请求request,DispatchServlet(Spring 的前端控制器)负责统一分发请求到Spring控制器(Controller)。
2.统一分发之前,需要借助于handlermapping对象定位到具体的Spring控制器(Controller)。
3.Spring控制器处理DispatchServlet分发过来的的请求,执行业务逻辑或调用业务逻辑组件。
4.一旦控制器处理完客户请求,则返回一个ModelAndView 对象给DispatchServlet前端控制器.,ModelAndView 对象包含数据模型和视图信息(很明显Model和View)。

5.DispatchServlet询问视图解析器,查找相应视图。

6.由某具体视图为用户显示页面。


还是很容易理解的吧。就开始试试吧。

首先在web.xml中配置上DispatchServlet(Spring 的前端控制器)

添加上
 
    spring-dispatcher
    org.springframework.web.servlet.DispatcherServlet
   
      contextConfigLocation
 /WEB-INF/config/spring/spring-dispather.xml
   

    1
 


 
    spring-dispatcher
    /
 


配置好这个就在相应的目录下建立spring的配置文件。先来个Spring 配置文件的片段吧。对应着说:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util" xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
        http://www.springframework.org/schema/util
        http://www.springframework.org/schema/util/spring-util-3241.xsd
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-3.2.xsd
        http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">
       
         
   








   
   

 p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" />
    
   
 

  

 
              
              
              
        


      
      500
     
      10000
     
      1000
     
      true
     
      180
     
      true        
 


class="org.springframework.jdbc.datasource.DataSourceTransactionManager">



 
     
         
   
 


上面都写了注释,相信能看到这篇文章的人都能看懂吧,不多解释。以上都是常用到的配置,其他的配置我还没碰到,

不多说。说多了也掌握不了。学东西还是在项目上学得快。


配置好之后就是Spring mvc的框架下开发了。


之所以认为Spring mvc开发比Struts2简单很多就是因为注释。 你看Spring文件中就没有对应Controller的配置。

不像Struts2每个Action都要配置上来,虽然用通配符也简单不少。不过这个完全不写,通过注释搞定就行了。举个例子:


@Controller
public class LoginController {
@RequestMapping( value = "dologin") 
@ResponseBody 

@SessionAttributes({"username","xxx"})
public Map dologin(HttpServletRequest req,

Model model,
@RequestParam(value = "username") String username,
@RequestParam(value = "password") String password
){
Map res = new HashMap();

model.addAttribute("username",username);
if(username.equals("hello")&&password.equals("hello")){
res.put("status", true);
res.put("result", "success");
}else{
res.put("status",false);
res.put("result", "用户名或密码错误!");
}
return res;
}
}


这段代码的意思就不用我解释了吧。

直接看注释,@Controller 这个注释就是表明此类是个Controller类(对应于Struts2的Action类),

有了此注释就不用继承基本Controller类了。

@RequestMapping( value = "login/dologin") 这个注释可以用于方法上面也可以用于类上面。

我只说用在方法上面(我觉得用在类上面复杂)。 看到里面有个value参数了吧。

这个参数的值就是匹配的request中url的值,也就是访问这个方法的话在url后面写login/dologin这个就找到这个方法了。

这个对应比Struts2中写个Action方法都去配置文件中写个配置简单吧。

@ResponseBody 这个注释是指不反回视图了只返回数据。 

SpringMVC中controller的默认返回值类型是ModelAndView就是视图和数据。

别问我为什么数据用Model来存,Model是什么?我也不懂,跟着用就行了。

就我理解我认为Model就是个jsp中用来页面间传值的request。代码中有句model.addAttribute("username",username);

就是把username的值存在名字叫做”username“的属性中。然后在返回的页面中就可以通过${username}来取得username的值。

@SessionAttributes 这个注释放在类的上面。看了上面model.addAttribute("username",username);就好理解了。

model.addAttribute("username",username);是将属性”username“放在request中。

如果在类上面加了@SessionAttributes({"username"})那么”username“这个属性就会加到session中随时来取。

@RequestParam(value = "username",defaultValue ="xxx") 这个注释,是指页面访问此方法的时候url后面加的参数在这接收。

例如url 是 ……login/dologin?username="aaa 就是想后台传了个username参数。那么可以通过此注释来接收参数。

还有这段代码中没用到的注释:

@Service("businessService")     对于这个注释我认为就是向Spring配置文件中注释.这个注释放在类的上面。

例如放在BusinessServiceImpl 的上面那么就相当于在配置文件中配置了

@Resource(name = "businessService") 这个注释就是注入的意思。

上面注释相当于配置了bean那么这个注释就是取得那个bean的意思。用法为 在注释下面声明一个此对象就相当于new 了这对象了,

就可以拿来用了。例如:

@Resource(name = "businessService")

BusinessService businessService;

(BusinessService是BusinessServiceImpl 实现的接口,应该能想到。)这样就可以直接拿businessService这个对象来用了。


注释就说这么几个吧。其他的我用的还不多。


然后说下Spring mvc的controller方法默认返回 的ModelAndView类型是怎么回事。 这个类应该是spring mvc中特有的。

一般如果需要返回页面的话 就用这个返回类。 这个类对象的生成方法是:ModelAndView mv = new ModelAndView("login/success");

其中的参数是个jsp页面。可能你要问这为什么是个jsp页面,看上面的spring配置文件中有个配置是:

看到了吗。他会自动把视图的前后缀加上。这个页面就是"/WEB-INF/jsp/login/success.jsp"。这样的话就会返回success.jsp这个页面,

Model上面说了就是向页面传值。作用域和Request一样。把他当做Request就行了。取值方式都一样。${requestScope.xxxxxx}。

如果是传大量数据的话 一般也不用这个传。比如用List返回一系列数据的话。这样的话 返回值就不是ModelAndView类型了。

就不能同时返回视图。所以用@ResponseBody 注释。来指明只返回数据部返回视图。

想学习的话 可以找点demo试试。看是不是比Struts简单多了。就写这点吧。其他的还没怎么了解。

至尊新手 纯手写,有什么问题欢迎指正。

你可能感兴趣的:(Spring,spring,mvc,框架)