springMVC

1、springMVC helloWorld

1)、springMVC web.xml中的配置

 这样一种配置节:context-param,它用于向 ServletContext 提供键值对,即应用程序上下文信息。我们的 listener, filter 等在初始化时会用到这些上下文中的信息,那么 context-param 配置节是不是应该写在 listener 配置节前呢?实际上 context-param 配置节可写在任意位置,因此真正的加载顺序为:context-param -> listener -> filter -> servlet

<?xml version="1.0" encoding="utf-8"?>   
<!DOCTYPE web-app    
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"    
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
    <servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 可以自定义servlet.xml配置文件的位置和名称,默认为WEB-INF目录下,名称为[<servlet-name>]-servlet.xml,如spring-servlet.xml -->
        <!-- <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> 
            </init-param> -->
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>

2)spring-servlet.xml中的配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    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"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

    <context:component-scan base-package="com.wanglu.cn"/>
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

</beans>

3)HelloWorldController.java

package com.wanglu.cn;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@RequestMapping("/helloWorldController")
@Controller
public class HelloWorldController {

    @RequestMapping(value="/helloWorld" ,method=RequestMethod.POST,params={"username","age!=10"},headers={"Accept-Language=zh-CN,zh;q=0.8"})
    public String helloWorld1(Model model) {
        model.addAttribute("message", "Hello World!");
        System.out.println("helloworld");
        return "helloWorld";
    }
    /**
     * requestMapping 支持ant风格的url
     * ?匹配一个字符,*匹配任意的字符,**:**匹配多层路径
     * @param model
     * @return
     */
    @RequestMapping(value="/hello/*/helloWorld" )
    public String helloWorld2(Model model) {
        model.addAttribute("message", "Hello World!");
        System.out.println("helloworld");
        return "helloWorld";
    }
    /**
     *占位符    
     * @PathVariable
     */
    @RequestMapping("/helloworld/{id}")
    public String helloWorld3(Model model,@PathVariable("id") Integer id) {
        model.addAttribute("message", "Hello World!");
        System.out.println("helloworld"+id);
        return "helloWorld";
    }
}

2、springMVC实现REST中的GET,POST,DELETE,PUT请求

  1)web.xml

<filter>
        <filter-name>HiddenHttpMethodFilter</filter-name>
        <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>HiddenHttpMethodFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

2)表单

<form action="helloWorldController/helloWorldDelete/1" method="post">
     <input type="hidden" name="_method" value="DELETE">
     <input type="submit" value="发送DELETE请求">
</form>

3)Controller

      /**
     * springMVC实现REST中的DELETE请求
     */
    @RequestMapping(value="/helloWorldDelete/{id}",method=RequestMethod.DELETE)
    public String helloWorld(@PathVariable("id") Integer id) {
        System.out.println("DELETE:"+id);
        return "helloWorld";
    }

3、@requestParam的用法
    @RequestMapping(value="/helloWorldDelete",method=RequestMethod.GET)
    public String helloWorld1(@RequestParam(value="username") String username,
            @RequestParam(value="age",required=false,defaultValue="0") int age) {
        System.out.println("GET:"+username+",age:"+age);
        return "helloWorld";
    }

4、@requestHeader

  1. Host                    localhost:8080  
  2. Accept                  text/html,application/xhtml+xml,application/xml;q=0.9  
  3. Accept-Language         fr,en-gb;q=0.7,en;q=0.3  
  4. Accept-Encoding         gzip,deflate  
  5. Accept-Charset          ISO-8859-1,utf-8;q=0.7,*;q=0.7  
  6. Keep-Alive              300
  7.  
  8. @RequestMapping("/displayHeaderInfo.do") 
  9.  public void displayHeaderInfo(@RequestHeader("Accept-Encoding") String encoding, @RequestHeader("Keep-Alive") long keepAlive)  {  } 

5、/**
     * springMVC获取名字为JSESSIONID的Cookie
     */
    @RequestMapping(value = "/helloWorldDelete/{id}", method = RequestMethod.DELETE)
    public String helloWorld(@PathVariable("id") Integer id,
            @CookieValue("JSESSIONID") String sessionId) {
        System.out.println("DELETE:" + sessionId);
        return "helloWorld";
    }

6、/**
     * springmvc使用原生的api
     * @throws IOException 
     */
    
    public String userApi(HttpServletRequest request,HttpServletResponse response,Writer out) throws IOException{
        out.write("ssss");
        return "success";
    }

7、ModelAndView向前台传值的方式

    public ModelAndView userApi(HttpServletRequest request,HttpServletResponse response,Writer out) throws IOException{
        ModelAndView modelAndView=new ModelAndView();
        modelAndView.addObject("time",new Date());
        return modelAndView;
    }
    
    public String userApi1(Map<String,Object> map ) throws IOException{
        map.put("time",new Date());
        return "success";
    }

8、一般而言ModelAndView中的属性作用域都是request级别,即本次请求结束,属性也随之销毁。 如果想要实现多个请求共享其某个属性,需将其保存至session

@Controller

   @RequestMapping("/info")

   @SessionAttributes("user")  //要在方法中直接注解user必须要这一步 public class InfoController {     private Logger logger = LoggerFactory.getLogger(InfoController.class);          

   @RequestMapping("")     

public ModelAndView view(@ModelAttribute User user,) {         ModelAndView modelView = new ModelAndView("/info/view");       

          logger.info(user.toString());         

        return modelView;     }  }

转载于:https://my.oschina.net/u/2610056/blog/728854

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值