3、spring-mvc(model view controller)

1、@RequestMapping  URL地址请求
在web.xml中配置了关于view的启动文件如 web-servlet.xml或view-servlet.xml等,在这些view的配置文件中一般会配置spring扫描的包,以启动注解。
简单的url请求:@RequestMapping(value="/user/login.html")
通配url请求:@RequestMapping(value="/user/*.html")
通配参数请求:@RequestMapping(value="/user/{id}")   url: project/user/1221111
通配参数请求:@RequestMapping(value="/user")   url: project/user?id=1221111
1.1、获取通配参数请求中的参数:
@RequestMapping(value="/user/{id}")    url: project/user/1221111
public  String  loginPage(@PathVarirable("id") String id){System.out.println(id);}
也可以直接写成public  String  loginPage(@PathVarirable String id){ } 不推荐
@RequestMapping(value="/user")   url: project/user?id=1221111
常用:public  String  loginPage(HttpServletRequest request){
      String id = request.getParameter("id");}
也可用:public String loginPage(@RequestParam("id") String id){}
多个参数:@RequestMapping(value="/user")
public String loginPage(@RequestParam("id") String id,@RequestParam("name") String name,@RequestParam("age") String age){
System.out.println("id:"+id+"\nname:"+name+"\nage:"+age);

获取session
常用:public  String  loginPage(HttpServletRequest request){  String session =(String) request.getSession().getAttribute("loginName");
也可用:public  String  loginPage(@CookieValue("JSESSIONID") String cookieID){}
设置session
常用:request.getSession().setAttribute("id", "23222");
也可用:public  String  loginPage(HttpSession session){
session.setAttribute("id", "oioj0099");
<%=session.getAttribute("id")%>
还可以使用(返回本页):response.addCookie(new Cookie("id", "0909kkk"));

获取对象,注意必须要创建model,参数的name与之对应
http://localhost:8989/springMvc/user?name=skx&age=23
public  String  loginPage(User user){
注意:如果这时有个Person类和User一样拥有相同的属性name和age在接收时:
public  String  loginPage(User user,Person person){  这时会将ul参数分别传给user和person这可能不是我们想要的

使用@ModelAtrribute("user") User user 将请求的参数装备到对象user中,实现绑定。
也可在form表单将表单内容封装在对象中:<form modelAttribute="user" action="/test">....

注意:一个方法里面只能使用一种注解(@RequestParam,@CookieValue,@ModelAtrribute)其他的使用java类或request接收。
RequestParam参数绑定及判断,在写入数据库时是比较重要的
http://localhost:8989/springMvc/user?name=skx&age=23&sex=女
public  String  loginPage(@RequestParam(value="name",required=true)String name,@RequestParam(value="age",required=false) String age ,@RequestParam(value="sex",defaultValue="男") String sex){ 
print:
name:skx
age:23
sex:女
对cookile的判断:@CookieValue(value="loginName" required="true") String lid,

对头信息的获取与判断(字符编码,url请求方式)p184
还可以使用WebUtil这个类来获取参数(使用较少)


@Resource
@Autowired注解与 @Resource注解的区别
1. @Autowired
    @Autowired是Spring 提供的,需导入
    Package:org.springframework.beans.factory.annotation.Autowired;
    只按照byType 注入。
2. @Resource
    @Resource默认按 byName 自动注入,是J2EE提供的, 需导入Package: 
    javax.annotation.Resource;
@Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入。


1.2、数据返回页面
1.2.1  ModelAndView 使用较少
return new  ModelAndView("/test");  //返回页面
return new ModelAndView("/test","age",s);   //带对象返回页面
1.2.2 String

1.3数据验证
1.3.1对model的验证  (springMVC数据效验)
1.3.2对请求参数的验证 BindingResult bindresult{
                                                       bindresult.hasErrors(){....}

                                          }
对传入的对象进行与1.3.1medol的校验

猜你喜欢

转载自onway417.iteye.com/blog/2187841