5、spring之mvc原理及应用

来源:互联网 发布:bi工程师和数据分析 编辑:程序博客网 时间:2024/05/17 19:22

核心类:DispatherServlet

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");}

也可用:@RequestMapping(value="/user")

                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的校验


jstl和文件上传

0 0