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

好处:简介、方便、安全

posted @ 2023-01-01 22:40  Fannaa  阅读(22)  评论(0)    收藏  举报