springMvc学习之常用功能(二)

springMvc注解

@Controller 控制器
@RequestMapping 映射器
@RequestParam 请求参数
ModelAndView 模型和视图
Model 模型
springMvc对象属性自动封装:name=”username” Student对象接收时,自动封装为Student对象。

springMvc post请求乱码:在web.xml文件中配置过滤器

 <filter>
        <filter-name>characterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

controller内部转发和重定向

return "forward:/student/list.do";
return "redirect:/student/list.do";

1.spring-mvc.xml配置添加

<!-- 使用注解的包,包括子集 -->
<context:component-scan base-package="com.newbeedaly"/>

2.控制器类

package com.newbeedaly.controller;

import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

import com.newbeedaly.model.Student;

@Controller  
@RequestMapping("/student")
public class StudentController {

    private static List<Student> studentList=new ArrayList<Student>();

    static{
        studentList.add(new Student(1,"张三",11));
        studentList.add(new Student(2,"李四",12));
        studentList.add(new Student(3,"王五",13));
    }

    @RequestMapping("/list")
    public ModelAndView list(){
        ModelAndView mav=new ModelAndView();
        mav.addObject("studentList", studentList);
        mav.setViewName("student/list");
        return mav;
    }

    @RequestMapping("/preSave")
    public ModelAndView preSave(@RequestParam(value="id",required=false) String id){
        ModelAndView mav=new ModelAndView();
        if(id!=null){
            mav.addObject("student", studentList.get(Integer.parseInt(id)-1));
            mav.setViewName("student/update");
        }else{
            mav.setViewName("student/add");         
        }
        return mav;
    }
}

3.springMvc对ServletAPI的支持

package com.newbeedaly.controller;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.newbeedaly.model.User;

@Controller
@RequestMapping("/user")
public class UserController {

    @RequestMapping("/login")
    public String login(HttpServletRequest request,HttpServletResponse response){
        System.out.println("----登录验证---");
        String userName=request.getParameter("userName");
        String password=request.getParameter("password");
        Cookie cookie=new Cookie("user",userName+"-"+password);
        cookie.setMaxAge(1*60*60*24*7);
        User currentUser=new User(userName,password);
        response.addCookie(cookie);
        HttpSession session=request.getSession();
        session.setAttribute("currentUser", currentUser);
        return "redirect:/main.jsp";
    }

    @RequestMapping("/login2")
    public String login2(HttpServletRequest request){
        return "redirect:/main.jsp";
    }

    @RequestMapping("/login3")
    public String login3(HttpSession session){
        return "redirect:/main.jsp";
    }

    @RequestMapping("/ajax")
    public @ResponseBody User ajax(){
        User user=new User("zhangsan","123");
        return user;
    }
}

4.springMvc对Json的支持

第一种方法

在spring-mvc.xml配置注解驱动

<!-- 支持对象与json的转换。 -->
    <mvc:annotation-driven/> 

在控制器中添加注解

@RequestMapping("/ajax")
public @ResponseBody User ajax(){
    User user=new User("zhangsan","123");
    return user;
}

第二种方法,使用工具类

package com.newbeedaly.util;

import java.io.PrintWriter;

import javax.servlet.http.HttpServletResponse;


public class ResponseUtil {

    public static void write(HttpServletResponse response,Object o)throws Exception{
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out=response.getWriter();
        out.println(o.toString());
        out.flush();
        out.close();
    }
}

猜你喜欢

转载自blog.csdn.net/willdic/article/details/80540508