SpringMVC

来源:互联网 发布:利润表数据分析 编辑:程序博客网 时间:2024/06/08 07:57
一、概念
     MVC: model,view,controller
     springMVC: 是一个MVC框架,能够将数据,业务和展现分离
二、原理图
     
三、xml配置方式实现
 代码地址:https://github.com/xiangqian19831224/springmvc01.git
1、创建工程
2、在web.xml中配置前端控制器DispatcherServlet
 
     配置DispatcherServlet
      配置映射规则
    
3、web-inf下创建spring的mvc配置文件
     文件名称为[servlet-name]-servlet.xml
    [servlet-name]就是web中配置的servlet-name
4、在[servlet-name]-servlet.xml中配置HandlerMapping,controller
    
动作名字->controller
    hello.do->com.xx.HelloController
    参看最小面的图
5、创建jsp页面,需要发出请求的页面
    动作名字->发送命令
    与4结合看,名字对应的消息,会传送到对应的controller
     
6、创建controller继承AbastractController,重写handleRequestInternal函数
        //返回數據和頁面
       ModelAndView mav = newModelAndView("index");
      mav.addObject("helloworld", "hello " +hello);
7、在[servlet-name]-servlet.xml中配置视图解析器


四、注解实现
 代码地址:https://github.com/xiangqian19831224/springmvc02.git
1、controller注解
    @Controller
    public classHelloController {
        @RequestMapping(value="/hello.do")
        public String hello(String userName, Model model){
         System.out.println(userName);
         model.addAttribute("helloworld", userName);
      
         return "";
      }
  }  
2、配置
  web.xml: 配置dispatcherServlet 不变
  hello.jsp:  参数name="userName" 与controller中的参数命名一样
 [servlet-name]-servlet.xml: 
  

  五、访问controller的方式
1、通过beanname的方式
2、通过类型的方式
    注: controller命令为, [name]Controller, jsp中,类型为[name].do就可以<假设servlet urlPatern为*.do>
3、通过简单url方式,我再spring4.0上面没有测试通过,3.0支持
1
4、源码地址:
  https://github.com/xiangqian19831224/springmvc03.git

六、访问多个页面
1、controller添加路径信息进行区分
     返回的是页面路径
@Controller
@RequestMapping("user")
public class UserController {
   
   @RequestMapping(value="list")
    publicString list(){
      System.out.println("--------查询用户信息----------");
       return"userinfo/user_list";
    }
   
   @RequestMapping(value="add.do")
    publicString add(){
      System.out.println("--------用戶信息添加----------");
       return"userinfo/user_add";
    }
}
2、jsp页面
   href值为对应的动作路径

3、源码地址:https://github.com/xiangqian19831224/springmvc04.git

七、参数传递方法

1、通过设置HttpServletRequest request来获取参数
        publicString add1(HttpServletRequest request){
         String userNum = request.getParameter("userNumber");
         String password =request.getParameter("password");

         System.out.println("userNumber:" + userNum + " password:" + password);
         return "user_add1";
      }

2、通过设置同名参数
   @RequestMapping(value="/add2.do")
    publicString add2(String userNumber, int password){

      System.out.println("userNumber:" + userNumber + " password:" + password);
       return"user_add2";
    }
      

3、通过@RequestParam限定赋值参数   
    @RequestMapping(value="/add3.do")
    publicString add3(@RequestParam("userNumber") StringuserNumber,       @RequestParam("password") int password){

      System.out.println("userNumber:" + userNumber + " password:" + password);
       return"user_add3";
   }

4、通过类传参数
   @RequestMapping(value="/add4.do")
    publicString add4(UserInfo user){

      System.out.println(user.toString());
       return"user_add4";
   }

5、时间参数传递
   注意: importjava.util.Date;
  @RequestMapping(value="/add5.do")
    publicString add5(Integer userId,Date userTime){

      System.out.println(userId);
      System.out.println(userTime);
      
       return"user_add5";
    }
   
   
   @InitBinder
    public voidinitBinder(ServletRequestDataBinder bin){
      
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-ddHH:mm:ss");
      
      CustomDateEditor cust = new CustomDateEditor(sdf, true);
      
      
      bin.registerCustomEditor(Date.class,cust);
   }

 
参考代码:
https://github.com/xiangqian19831224/springmvc05.git

八、返回页面数据
1. HttpServletRequest request直接使用   request.setAttribute("user", str);
  @RequestMapping(value="/add1.do")
    publicString add1(HttpServletRequest request){
       StringuserNum = request.getParameter("userNumber");
       Stringpassword = request.getParameter("password");

      System.out.println("userNumber:" + userNum + " password:" + password);
      
       String str ="userNumber:" + userNum + " password:" + password;
      request.setAttribute("user", str);
      
       return"user_add1";
   }

2. 使用ModelAndView
   @RequestMapping(value="/add2.do")
    publicModelAndView add2(){
       ModelAndViewmodelAndView = new ModelAndView("user_add2");
      modelAndView.addObject("userId", 1001);
      modelAndView.addObject("userName", "张三");
      
       returnmodelAndView;
   }

3. 使用Model model
   @RequestMapping(value="/add3.do")
    publicString add3(Model model){
       model.addAttribute("personId", 1233);
       model.addAttribute("personName", "唐伯虎");
      
       return"user_add3";
   }

4.  使用Map
   @RequestMapping(value="/add5.do")
    publicString add5(Integer personId,String personName,Map map){
      System.out.println(personId);
      System.out.println(personName);
      map.put("personId", 9527);
      map.put("personName", "唐伯虎");
      
       return"user_add5";
   }

参考代码:https://github.com/xiangqian19831224/springmvc06.git

九、SpringMVC AJAX
1、通过HttpServletResponse直接返回结果
    @RequestMapping("/ajaxUser.do")
    public voiduserNumber(String userNumber, HttpServletResponse response) {
      System.out.println(userNumber);
       try {
         response.setContentType("text/html");
         response.setCharacterEncoding("utf-8");
          PrintWriterout = response.getWriter();

          if("liu".equals(userNumber)) {
            out.println("对不起,请从新输入账号");
          } else{
            out.println("恭喜你,账号可以使用");
          }

         out.flush();
         out.close();
       } catch(Exception e) {
         e.printStackTrace();
       }
   }

2、通过json格式返回
@RequestMapping("ajaxUser2.do")
    public@ResponseBody UserInfo ajaxUser(Integer userId) {
      
      System.out.println("编号:" + userId);
      
       UserInfouserInfo = new UserInfo();
      userInfo.setUserId(userId);
      userInfo.setUserName("张三");
      userInfo.setUserSex("男");

       returnuserInfo;
   }


   springmvc-servlet.xml配置
 
 

参考代码:
https://github.com/xiangqian19831224/springmvcajax.git

原创粉丝点击