SSM框架之SpringMVC注解的使用

@transaction错错错!!!:是@Transactional 在dao层,service层使用

@Param:在Dao层的参数中使用,方法后(@Param("PageSize") int PageSize)

mapper文件写在实体类这个包中,mapper指的是映射文件,namespace是指找到当前的映射文件中的具体语句

<mapper namespace="com.company.dao.UserInfo">

<select id="" paramerType="" resultType="">

</mapper>

@RequestParam能够更加方便的获得HttpServletRequest中的参数值,@RequestParam是用于接收基本数据类型参数

@RequestMapping,实现对Restful URL的支持,@RequestMapping是用于处理请求地址映射的注解,可用于类或方法上

@requestMapping("/")错错错!!!是@RequestMapping指定控制器映射的URL

@RequestMapping("/")说明这个请求是从根目录开始的;

注释:@Controller后面默认什么也不写,默认生成的bean是类名首字母小写的对象,相当于在viewSpace-servlet.xml中写

bean id ="小写的类名"要养成好的习惯,id就是小写的类名class="包名+类名"这两个是等效的

public 后可以是void和String

返回值默认是跳转的地址,写return "otherpage.jsp",再也不用写request.getrequestdispatcher.forward等等了

@RequestMapping("请求的名字,没有.form,.form被过滤掉了")

若是要重定向,则是

return " redirect:otherPage.jsp";总之.默认不写是转发的方式

之前例子是不带参数的,这个例子带参数

使用request带参数

只要是新的请求,之前一次request带的数据就没有了

处理乱码,实在没有办法就URLEncoder.encode(userName,"utf-8")

另外,框架给重定向带参数提供了便利

注意RedirectAttributes attrs前面没有符号,重定向之后所需要的参数,通过addAttribute加入进去

传递表单数据到实体类对象中(模型属性),传过来的参数组成了一个实体类对象,接收的时候也可以用老办法,@RequestParam String username,@RequestMapping String[] hobbies

@ModelAttribute是用于接收模型数据

而是用@ModelAttribute("user")model要不指的是业务模型,要不是数据模型,此处是数据模型

 

方法里的@RequestMapping()内什么也不写,默认是给value赋值,是头一个页面的action的数值

value="之前页面的名字",method={RequestMethod.POST,RequestMethod.GET}

模型属性会自动放入request中,即原来的request.setAttributes,也能使用名字在跳转的页面直接${名字.属性}使用了

属性名

说明

value

指定请求的实际地址,指定的地址可以是URI Template 模式,该属性用的最多

method

指定请求的method类型, GET、POST、PUT、DELETE等

consumes

指定处理请求的提交内容类型(Content-Type),如application/JSON, text/html

produces

指定返回的内容类型,仅当request请求头中的Accept类型中包含该指定类型时才返回

params

指定request中必须包含某些参数值,才使用该方法处理

headers

指定request中必须包含某些指定的header值,才能使用该方法处理请求

 

     //produces="text/json; charset=UTF-8"相当于resposne添加了Content-Type响应头
    @RequestMapping(value="queryPage{page}With{pageSize}Users", produces="text/json; charset=UTF-8")

对于ajax,@ResponseBody

@ResponseBody//添加此注解,表示返回的字符串不是页面地址,而是响应体正文!

@PathVariable是用于对指定请求的URL路径中的变量接收动态传参,不常用

public String queryUserInfoByPage(@PathVariable int page,@PathVariable int pageSize)

控制器之间的跳转:控制器转发和重定向到另外一个控制器controller里面去,而不是跳转到jsp页面

SpringMVC是围绕着DispatcherServlet展开的,eclipse10 不支持SpringMVC自动生成环境,所以需要配置,在web.xml中和

WEB-INF中配置;

@control错错错!!!@controller将这个类变成一个Handler控制器

RedirectAttributes是Spring mvc 3.1版本之后出来的一个功能,专门用于重定向之后还能带参数跳转的

若前端页面有备注等类似的信息,不是必填写项,如下处理:

SpringMVC其他功能:字段校验(需要导入包):validation-api是字段校验的基础包,hiibernate-validator是扩展包,jboss-loging是记日志包;使用条件:原本只是有在javascript中使用前端代码检查页面提交元素的合理性,但是可以在地址栏拼写

字符串绕过前端校验,比如在秒杀中,前端验证每个人只能买一个手机,不能改变为别的数字,但是在字符串中改变,那么商家就要倒霉了.所以在公司一定是前端加后端校验都有的

在viewSpace-Servlet.xml中开启字段校验的validator校验器(valid指的是有效的,validat指的是校验的动作,validator校验器)

在实体类中加@Pattern(regexp="^\\S{3,16}$",message="账号名必须是3~16位的非空白字符")若不满足,返回message的话术

Spring的form表单使用

(记住啊,所有bean先写id之后写class,class比较长,按住ctrl之后显示超链接即可)

(记住啊,导入的包是javax是java的扩展包,一般在java中只有接口,但是没有实现,一般由导入的第三方扩展包实现他,所以叫javax)

form表单标签

 

@ModelAndView

注解分类:

1.声明bean的注解:

@Compoment没有明确的角色

@Service业务逻辑层使用

@Repository在数据访问层使用

@Controller在表现层使用,控制器的声明,相当于原来的servlet的地方,现在封装了;

2.注入bean的注解

@Autowired有Spring提供

那么使用@Autowired的原理是什么?

  其实在启动spring IoC时,容器自动装载了一个AutowiredAnnotationBeanPostProcessor后置处理器,当容器扫描到@Autowied、@Resource或@Inject时,就会在IoC容器自动查找需要的bean,并装配给该对象的属性

 <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>  

3.java配置相关

@Configuration当前类为配置类

@Bean声明方法的返回值是一个bean,注解的位置在方法上

4.切面Aop相关

@Aspect

@After@before@Around\

5,bean的属性支持

8.异步相关

12.SpringMVC相关

@Controller

@RequestMapping

@ReponseBody 支持将返回值放在response内,而不是一个页面,通常用户返回json数据(该注解贴在返回值旁或方法上)

@RequestBody

@PathVariable

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值