springMVC

http://blog.csdn.net/mingtianhaiyouwo/article/details/50395346

https://www.cnblogs.com/sunniest/p/4555801.html

 

这里多了一个layoutUrl的属性配置:<property name="layoutUrl"value="layout/layout.vm" />, 这个配置是设置你的layout文件的存在路径,需要注意的是,这个路径不是相对于webapp路径来的,而是相对于velocityConfig配置中的resourceLoaderPath属性配置的路径(resourceLoaderPath的路径是相对于webapp的路径)。

 

https://www.cnblogs.com/xiaoxi/p/5695783.html (springMVC提供和请求参数对应bean的接收方式来接收参数)

 

@RequestMapping(value={"","/"})

 

意思是说请求路径  可以为空或者/
我给你举个例子:比如百度知道个人中心 访问路径是
http://zhidao.baidu.com/ihome,当然你也可以通过 http://zhidao.baidu.com/ihome/来访问
我给你举个例子:比如百度知道个人中心 访问路径是
http://zhidao.baidu.com/ihome,当然你也可以通过 http://zhidao.baidu.com/ihome/来访问

为什么是ihome后开始对value进行匹配?什么时候是com后开始进行匹配(工作系统便是从com开始进行匹配),由什么决定?

@PathVariable     按路径匹配参数(问号前的参数)
@RequestBody    

@RequestParam

 

  • GET请求中,因为没有HttpEntity,所以@RequestBody并不适用。
  • 在POST请求,可以使用@RequestBody和@RequestParam,但是如果使用@RequestBody,对于参数转化的配置必须统一。

@RequestBody接收的是一个Json对象的字符串,而不是一个Json对象。然而在ajax请求往往传的都是Json对象,后来发现用 JSON.stringify(data)的方式就能将对象变成字符串。同时ajax请求的时候也要指定dataType: “json”,contentType:”application/json” 这样就可以轻易的将一个对象或者List传到Java端,使用@RequestBody即可绑定对象或者List.

javascript代码 
“`

(document).ready(function(){  
        var saveDataAry=[];  
        var data1={"userName":"test","address":"gz"};  
        var data2={"userName":"ququ","address":"gr"};  
        saveDataAry.push(data1);  
        saveDataAry.push(data2);.ajax({ 
type:"POST", 
url:"user/saveUser", 
dataType:"json", 
contentType:"application/json", 
data:JSON.stringify(saveData), 
success:function(data){ 


}); 
}); 
 

java代码: 
“ @RequestMapping(value = “saveUser”, method = {RequestMethod.POST }}) 
@ResponseBody 
public void saveUser(@RequestBody List users) { 
userService.batchSave(users); 
}

 

@Controller和@RestController的区别?

 

springMVC返回页面或数据:

返回视图:

不对springMVC配置任何东西的时候在return “X”的时候自动回去找X对应的视图,很显然由于没有做任何配置,会报404,所以如果你要想返回一个视图(HTML(也可使用转发)或jsp,Velocity, FreeMarker, XML, PDF, Excel等)需要给spring配视图解析。

<!--解析返回JSP视图-->

<bean id="viewResolverJsp"
      class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/"/>
        <property name="suffix" value=".jsp" />
        <property name="order" value="2"/>
</bean>

 

返回数据:(//数据在的页面是哪个html的??)

不对springMVC配置任何东西的时候在return “X”的时候自动回去找X对应的视图,所以返回数据的时候需要配@ResponseBody

@ResponseBody

@Responsebody 注解表示该方法的返回的结果直接写入 HTTP 响应正文(ResponseBody)中,一般在异步获取数据时使用,通常是在使用 @RequestMapping 后,返回值通常解析为跳转路径,加上 @Responsebody 后返回结果不会被解析为跳转路径,而是直接写入HTTP 响应正文中。 
作用: 
该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。 
使用时机: 
返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等格式或没有格式的java类型数据)使用;

当页面发出异步请求:

function login() {
    var datas = '{"username":"' + $('#username').val() + '","userid":"' + $('#userid').val() + '","status":"' + $('#status').val() + '"}';
    $.ajax({
        type : 'POST',
        contentType : 'application/json',
        url : "${pageContext.request.contextPath}/user/login",
        processData : false,
        dataType : 'json',
        data : datas,
        success : function(data) {
            alert("userid: " + data.userid + "username: " + data.username + "status: "+ data.status);
        },
        error : function(XMLHttpRequest, textStatus, errorThrown) {
            alert("出现异常,异常信息:"+textStatus,"error");
        }
    });
};

例如:

@RequestMapping(value = "user/login")
@ResponseBody
// 将ajax(datas)发出的请求写入 User 对象中,返回json对象响应回去
public User login(User user) {   
    User user = new User();
    user .setUserid(1);
    user .setUsername("MrF");
    user .setStatus("1");
    return user ;
}

自己封装的状态码和浏览器看到的404,200,500等有什么区别》这些常见的状态码是怎么来的??

springMVC异步处理请求:(logger无法打印request的问题) 

返回视图加数据:

controller的方法返回值类型为ModelAndView,
return new ModelAndView("list", map);前者为视图名,后者为map封装的数据Map<String, Object> map = new HashMap<>();

同时配走springMVC和不走springMVC的请求 

<servlet>
   <servlet-name>mvc</servlet-name>
   <servlet-class>
      org.springframework.web.servlet.DispatcherServlet
   </servlet-class>
   <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-web-config.xml</param-value>
   </init-param>
   <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
   <servlet-name>mvc</servlet-name>
   <url-pattern>/</url-pattern>
</servlet-mapping>

<servlet>    
        <servlet-name>default</servlet-name>    
        <servlet-class>    
          org.apache.catalina.servlets.DefaultServlet    
        </servlet-class>    
        <init-param>    
            <param-name>debug</param-name>    
            <param-value>0</param-value>    
        </init-param>    
        <init-param>    
            <param-name>listings</param-name>    
            <param-value>true</param-value>    
        </init-param>    
        <load-on-startup>1</load-on-startup>    
    </servlet> 

<servlet-mapping>   
        <servlet-name>default</servlet-name>   
        <url-pattern>*.css</url-pattern>   
    </servlet-mapping>   
   
    <servlet-mapping>   
        <servlet-name>default</servlet-name>   
        <url-pattern>*.gif</url-pattern>   
    </servlet-mapping>   
   
    <servlet-mapping>   
        <servlet-name>default</servlet-name>   
        <url-pattern>*.jpg</url-pattern>   
    </servlet-mapping>   
    
     <servlet-mapping>   
        <servlet-name>default</servlet-name>   
        <url-pattern>*.png</url-pattern>   
    </servlet-mapping> 
   
    <servlet-mapping>   
        <servlet-name>default</servlet-name>   
        <url-pattern>*.js</url-pattern>   
    </servlet-mapping>   
     <servlet-mapping>   
        <servlet-name>default</servlet-name>   
        <url-pattern>*.pdf</url-pattern>   
    </servlet-mapping>

 

 

请求的第一站是springMVC的前端控制器DispatcherServlet, 大多数基于java的web前端框架都有前端控制器。DispatcherServlet负责将请求发送给控制器controller,因此DispatcherServlet需要知道应该将请求发给哪个controller。所以DispatcherServlet会查询一个或多个处理器映射(handler mapping)决定将请求交给哪个controller。控制器controller做的最后一件事是将业务数据包装(比如ModelMap)和视图名返回给DispatcherServlet(实际项目只返回视图名即可怎么回事)。Dispatcher调用视图解析器查找到具体的视图实现(jsp或vm文件等等)。视图使用模型数据渲染输出,输出通过响应对象传递给客户端。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值