springmvc 业务处理控制器的三种实现和全注解

一、实现Controller接口

public class HelloContronller implements Controller{

	@Override
	public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
		System.out.println("spring入门!");
		ModelAndView m=new ModelAndView();//这个对象用来保存数据和数据 ,方便传输
		m.addObject("name", "小美");//设置响应的数据name  req.setAttribute()
		m.addObject("age", "20");
		m.setViewName("/WEB-INF/hello.jsp");////设置响应视图的路径     WEB-INF下的资源不能直接访问,必须通过转发
		return m;
	}

}

二、实现HttpRequestHandler接口

public class HiController implements HttpRequestHandler{

	@Override
	public void handleRequest(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("实现HttpRequestHandler...");
		req.setAttribute("name", "华仔");
		req.setAttribute("age", 18);
		//转发 -- 因为要访问WEB-INF的资源     共享request作用域的数据
		req.getRequestDispatcher("/WEB-INF/hello.jsp").forward(req, resp);
	}

}

三、普通类加注解【常用-掌握】

  • 引入:

上面这两种太局限了
方法名固定了
参数固定
返回值固定

  • 写法:

    写一个类
    要在这个类上加上一个注解@Controller
    该注解使用前提:

<!-- 扫描包路径:上下文组件扫描 ,Spring容器会去扫描cn.itsource这个包及其子包中所有的类,
	如果发现类上有类似@Controller这样注解,就会创建该类的对象,并进行管理-->
	<context:component-scan base-package="cn.itsource"></context:component-scan>

请求匹配也不用<bean配置>,要用注解@RequestMapping
该注解使用前提:

<mvc:annotation-driven></mvc:annotation-driven>

配置一次,永久使用

全注解:

  • 匹配请求参数的注解

    以前用<bean id="/hello" class="类的全限定名">`
    现在用RequestMapping("/hello")
    但是需要去spring-mvc.xml开启spring对mvc的支持该注解才生效

<!--开启spring对mvc的支持该注解才生效-->
<mvc:annotation-driven></mvc:annotation-driven>
  • 实例化对象注解(它们只能放在类上。前提在spring-mvc.xml中去配置,扫描包路径的配置:<context:component-scan base-package=“cn.itsource”></context:component-scan>)
    在控制层器Controller层中使用:@Controller
    在Service层中使用:@Service
    在Dao层中使用:@Repository
    如果不在上面这些情况中需要实例化对象使用通用注解:@Component
    这个四个注解,可以互用,但是不建议,最好按照层次使用。
  • 注入注解
    以前的方式<property name="name" value="牛牛"></property>
    现在注解:@Autowired(按照类型匹配),@Resource(默认安照名字匹配,要对应上类的名字,),用在字段和setter方法上,一般来说都是放在字段上面。

注意现在能用注解全用注解,只有在使用别人写的类的时候才去使用xml配置。

发布了23 篇原创文章 · 获赞 1 · 访问量 171

猜你喜欢

转载自blog.csdn.net/weixin_45528650/article/details/105442280
今日推荐