SpringMVC day_1
SpringMVC通过一套MVC注解让POJO成为处理请求的控制器
,而无需实现任何接口支持REST风格的URL
创建静态工厂
一、在web.XML文件中配置DispatcherServlet 快捷键
<servlet>
<servlet-name>hellow</servlet-name>
<!-- 前端控制器(DisatcherSrevlet):接收请求,响应结果 返回可以是json,String等数据类型 也可以是页面(model) -->
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:application.xml</param-value>
</init-param>
<!-- Servlet被创建的时间 若为负数则在第一次请求是被创建
若为0或正数则在当期那WEB应用被Servlet加载时创建实例 且数组越小越早被创建 -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>hellow</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
二、创建SpringMVC配置文件 src下 application.xml
<!-- 配置试图解析:制图名称:解析器 将试图逻辑名解析为/WEB-INF/jsp/<viewName>.jsp 实际的物理试图 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<!-- 配置自动扫描的包 -->
<context:component-scan base-package="com.Grea
test.Springmvc"></context:component-scan>
三、创建请求处理器类
@Controller
//请求处理器类
@RequestMapping("/SpringMVC")
public class Hellow{
private static final String SUCCESS = "success";
/*REST 表现层状态转换 就是Http协议里面
四个表示操作方式的动词 GET,POST,PUT,DELETE 分别对应四中操作
* GET 获取资源 POST新建资源 PUT 更新资源 DELETE 删除资源
*
* HiddenHttpMethodFilter通过过滤器 可以将DELETE PUT请求转换为表准的http方法
* get--》
* post---》寻找是否有一个名字为_method这样一个请求方式;DELETE,PUT如果没有 就是post
* */
@RequestMapping(value="/testRestput/{id}",method=RequestMethod.PUT)
public String testRestput(@PathVariable("id") Integer id){
System.out.println("testRestput..."+id);
return SUCCESS;
}
@RequestMapping(value="/testRestDELETE/{id}",method=RequestMethod.DELETE)
public String testRestDELETE(@PathVariable("id") Integer id){
System.out.println("testRestDELETE..."+id);
return SUCCESS;
}
//添加一个新的 新建
@RequestMapping(value="/testRestpost",method=RequestMethod.POST)
public String testRestpost(){
System.out.println("testRestpost...");
return SUCCESS;
}
@RequestMapping(value="/testRestGet",method=RequestMethod.GET)
public String testRestGet(Integer id){
System.out.println("testRestGet..."+id);
return SUCCESS;
}
//POJO对象绑定请求参数 支持级联属性 自动为该对象填
充属性
@RequestMapping("/testPojo")
public String testPojo(User user){
System.out.println("TETSpOJO.."+user);
return SUCCESS;
}
//@CookieValue获取cookieid
@RequestMapping("/testCookie")
public String testCookie(@CookieValue("JSESSIONID") String cookieid){
System.out.println("TESTcOOKIE"+cookieid);
return SUCCESS;
}
//@RequestHeader获取请求头的信息
@RequestMapping("/testRequestHeader")
public String testRequestHeader(@RequestHeader("Accept-Language") String str){
System.out.println("testRequestHeaders"+str);
return SUCCESS;
}
//@RequestParams可以绑定参数required=false指定是否可以不含该参数 defaultValue赋一个默认值
@RequestMapping("/testRequestParams")
public String testRequestParams(@RequestParam(value="age",required=false,defaultValue="4") Integer age ){
System.out.println("testRequetsParams "+ age);
return SUCCESS;
}
//可以将URL中的占位符参数绑定到 控制其处理的方法的参数中
@RequestMapping("/testPathValue/{id}")
public String testPathValue(@PathVariable("id") Integer id){
System.out.println("testPathValue"+id);
return SUCCESS;
}
@RequestMapping("/*/testAnt")
public String testAnt(){
System.out.println("testAnt");
return SUCCESS;
}
//eclipse有问题出不来 火狐可以
@RequestMapping(value="/testhHeaders",headers="Accept-Language=zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2")
public String testHeaders(){
System.out.println("testHeaders");
return SUCCESS;
}
//method =RequestMethod 来指定URL的请求方式
@RequestMapping(value="/testmethod",method=RequestMethod.GET)
public String testMethod(){
System.out.println("testMethod");
return SUCCESS;
}
//params=指定URL中要包含或不包含的某些值 精确化 URL
@RequestMapping(value="/testParams",params={"username","password!=1234"})
public String testParams(){
System.out.println("TESTpARAMS");
return SUCCESS;
}
/*@RequestMapping(“/hellow”)映射请求 指定处理哪些URL请求
* 在控制器的类定义 以及方法定义都可以标住//处理所有URL为hellow的请求
* InternalResourceViewResovler
* prefix + returnVal + suffix (success.jsp)
* */
@RequestMapping("/hellow")
public String hellow(){
System.out.println("Hellow Word!!!");
return SUCCESS;
}
四、JSP页面
index.jsp
<form action="SpringMVC/testRestput/13" method="post">
<input type="hidden" name="_method" value="PUT"/>
<input type="submit" value="提交put"/>
</form>
<form action="SpringMVC/testRestDELETE/12" method="post">
<input type="hidden" name="_method" value="DELETE"/>
<input type="submit" value="提交DELETE"/>
</form>
<form action="SpringMVC/testRestpost" method="post">
<input type="text" name="id" value="23" />
<input type="submit" value="提交"/>
</form>
<form action="SpringMVC/testRestGet" method="get">
<input type="text" name="id" value="23"/>
<input type="submit" value="提交"/>
</form>
<form action="SpringMVC/testPojo" >
<input type="text" name="username"/>
<input type="text" name="sex"/>
<!-- 级联属性 -->
<input type="text" name="man.age"/>
<input type="submit" value="提交"/>
</form>
<a href="SpringMVC/testRequestHeader"> testRequestHeader </a>
<br><br>
<a href="SpringMVC/testCookie"> testCookie </a>
<br><br>
<a href="SpringMVC/testRequestParams"> testRequestParams </a>
<br><br>
<a href="SpringMVC/testPathValue/3"> testPathValue </a>
<br><br>
<a href="SpringMVC/testhHeaders"> testhHeaders </a>
<br><br>
<a href="SpringMVC/asdfdfdf/testAnt"> testAnt </a>
<br><br>
<a href="SpringMVC/testParams?username=1212&password=1212"> testParams </a>
<br><br>
<form action="SpringMVC/testmethod" method="post">
<input type="submit" value="Method"/>
</form>
<a href="SpringMVC/testmethod"> testmethod </a>
<br><br>
<a href="hellow"> hellow </a>
<br><br>