SpringMVC_注解
通过HelloSpring了解注解使用
1、新建一个Moudle , 添加web的支持!
2、确定导入了SpringMVC 的依赖!
3、配置web.xml , 注册DispatcherServlet
4、编写SpringMVC 的 配置文件!
<?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:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
https://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- 自动扫描包,让指定包下的注解生效,由IOC容器统一管理 -->
<context:component-scan base-package="com.fan.controller"/>
<!-- 让Spring MVC不处理静态资源 .css .js .html .mp3-->
<mvc:default-servlet-handler />
<!-- 支持mvc注解驱动-->
<mvc:annotation-driven />
<!-- 视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
id="internalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
5、编写Controller ,增加注解实现
@Controller
public class HelloController {
@RequestMapping("/h1")
public String hello(Model model){
//封装数据
model.addAttribute("message","hello SpringMVCAnnotation");
return "hello";//会被视图解析器处理
}
}
通过实现接口类,只要实现了Controller 接口的类,说明是一个控制器, 作用 :处理请求并返回一个modelAndView
public class HelloController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
ModelAndView mv =new ModelAndView();
mv.addObject("message","hello SpringMVCAnnotation");
mv.setViewName("hello");
return mv;
}
}
6、写要跳转的hello.jsp页面
常见注解
@Controller : controller层用,声明它是一个控制器,代表这个类会被spring接管,被这个注解注解的类中所有方法,如果返回值是string且有具页面可以跳转,那么就会被视图解析器解析
@Service : service层用
@Repository : dao层用
@Component : 组件 四个注解功能都一样
@RequestMapping("/hello") : 用于映射url到控制器类或一个特定的处理程序方法。可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
在Spring MVC中可以使用 @PathVariable 注解,让方法参数的值对应绑定到一个URI模板变量上。用于restful风格
restful风格
@Controller
public class RestfulController {
// 原来的:http://localhost:8080/add?a=1&b=2
// restful:http://localhost:8080/add/1/2
// @RequestMapping(value = "/add/{a}/{b}",method= RequestMethod.GET)等价于
@GetMapping("/add/{a}/{b}")
public String restful1(@PathVariable int a,@PathVariable int b, Model model){
int result = a+b;
model.addAttribute("info","get结果为"+result);
return "c1";
}
@PostMapping("/add/{a}/{b}")
public String restful2(@PathVariable int a,@PathVariable int b, Model model){
int result = a+b;
model.addAttribute("info","post结果为"+result);
return "c1";
}
}
传统方式操作资源 :通过不同的参数来实现不同的效果!方法单一,post 和 get
http://127.0.0.1/item/queryItem.action?id=1 查询,GET
http://127.0.0.1/item/saveItem.action 新增,POST
http://127.0.0.1/item/updateItem.action 更新,POST
http://127.0.0.1/item/deleteItem.action?id=1 删除,GET或POST
使用RESTful操作资源 :可以通过不同的请求方式来实现不同的效果!如下:请求地址一样,但是功能可以不同!
http://127.0.0.1/item/1 查询,GET
http://127.0.0.1/item 新增,POST
http://127.0.0.1/item 更新,PUT
http://127.0.0.1/item/1 删除,DELETE
好处:简介、方便、安全

浙公网安备 33010602011771号