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
- Host localhost:8080
- Accept text/html,application/xhtml+xml,application/xml;q=0.9
- Accept-Language fr,en-gb;q=0.7,en;q=0.3
- Accept-Encoding gzip,deflate
- Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
- Keep-Alive 300
- @RequestMapping("/displayHeaderInfo.do")
- 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; } }
149

被折叠的 条评论
为什么被折叠?



