SpringMVC

来源:互联网 发布:淘宝aj比较靠谱的店 编辑:程序博客网 时间:2024/06/16 20:07

一.springMVC通过xml设置

1.在web.xml中配置springmvc控制器

<!-- 配置springMvc核心控制器 -->    <servlet>        <servlet-name>DispatcherServlet</servlet-name>        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>    </servlet>    <servlet-mapping>        <servlet-name>DispatcherServlet</servlet-name>        <url-pattern>*.do</url-pattern>    </servlet-mapping>    <!-- 默认会去WEB-INF下找DispatcherServlet-servlet.xml文件 -->

2.在WEB-INF下配置DispatcherServlet-servlet.xml

<?xml version="1.0" encoding="UTF-8"?><beans       xmlns="http://www.springframework.org/schema/beans"      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"      xmlns:mvc="http://www.springframework.org/schema/mvc"      xsi:schemaLocation="      http://www.springframework.org/schema/beans       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd      http://www.springframework.org/schema/mvc      http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">       <bean name="/hello.do" class="com.itheima.springmvc.HelloAction" ></bean>    <!-- 映射器     将beanname属性当做url请求    -->     <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>    <!-- 适配器     用于寻找实现了Controller接口的实现类    -->    <bean  class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>    <!-- 视图解析器     通过ModelAndView对象封装的视图名找到真正的页面    -->    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/></beans>

3.自定义HelloAction.java

public class HelloAction implements Controller{    @Override    public ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response) throws Exception {        // TODO Auto-generated method stub        ModelAndView modelAndView = new ModelAndView();        modelAndView.addObject("message", "hello world!!");        modelAndView.setViewName("/jsp/success.jsp");        return modelAndView;    }}

4.自定义/jsp/success.jsp文件

<body><h1>${message}</h1></body>

5.加载指定的springmvc.xml文件

在web.xml中配置<!-- 配置springMvc核心控制器 -->    <servlet>        <servlet-name>DispatcherServlet</servlet-name>        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>        <!-- 通知DispatcherServlet去指定路径下加载springmvc.xml -->        <init-param>            <param-name>contextConfigLocation</param-name>            <param-value>classpath:springmvc.xml</param-value>        </init-param>    </servlet>

6.配置逻辑视图

在springmvc01.xml中配置<!-- 视图解析器     通过ModelAndView对象封装的视图名找到真正的页面    -->    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" >        <property name="prefix" value="/jsp/"></property>        <property name="suffix" value=".jsp"></property>    </bean>

7.将springmvc01.xml加入总springmvc.xml文件

<import resource="com/itheima/springmvc/spring01.xml"/>

8.映射器配置

在springapp01.xml配置

 <!-- 映射器         适合将多个请求路径映射到一个action中       -->      <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">        <property name="mappings">            <props>                <prop key="/update.do">userAction</prop>                <prop key="/delete.do">userAction</prop>                <prop key="/query.do">userAction</prop>            </props>        </property>      </bean>

9.jsp到jsp/html之间的转发控制器

  <!-- jsp到jsp之间的转发控制器 -->     <bean name="/home.do" class="org.springframework.web.servlet.mvc.ParameterizableViewController">        <property name="viewName" value="/jsp/success.jsp"></property>     </bean>

10.封装参数的控制器

public class UserAction extends AbstractCommandController{    public UserAction(){        this.setCommandClass(User.class);    }    @Override    protected ModelAndView handle(            HttpServletRequest request,            HttpServletResponse response,             Object obj,             BindException error)            throws Exception {        ModelAndView modelAndView = new ModelAndView();        modelAndView.addObject("message", "增加用户成功");        modelAndView.setViewName("/jsp/success.jsp");        User user = (User)obj;        System.out.println(user.getUserName()+"..."+user.getAge());        return modelAndView;    }   }

11.解决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></filter><filter-mapping>    <filter-name>CharacterEncodingFilter</filter-name>    <url-pattern>/*</url-pattern></filter-mapping>

12.自定义日期转换器

在UserAction.java中重写initBinder方法

@Override    protected void initBinder(HttpServletRequest request,            ServletRequestDataBinder binder) throws Exception {        binder.registerCustomEditor(Date.class,                new CustomDateEditor(                        new SimpleDateFormat("yyyy-mm-dd"),true));    }

二.springmvc的注解方式

1.在web.xml中配置核心控制器

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5"     xmlns="http://java.sun.com/xml/ns/javaee"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">    <servlet>        <servlet-name>DispatcherServlet</servlet-name>        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>        <init-param>            <param-name>contextConfigLocation</param-name>            <param-value>classpath:spring.xml</param-value>        </init-param>    </servlet>    <servlet-mapping>        <servlet-name>DispatcherServlet</servlet-name>        <url-pattern>*.do</url-pattern>    </servlet-mapping></web-app>

2.配置spring.xml

    <import resource="com/daming/springmvc/app01/spring_app01.xml"/>

3.配置spring_app01.xml

<!-- 让springioc容器自动扫描带注解的文件类 -->    <context:component-scan base-package="com.daming.springmvc.app01"></context:component-scan>

4.带注解的action类

@Controllerpublic class UserAction {    @RequestMapping(value="/hello.do",method=RequestMethod.POST)    //接收普通的参数    public String hello(Model model,String userName,int age){        model.addAttribute("message", "hello");        System.out.println(userName+":"+age);        return "/jsp/success.jsp";    }    @RequestMapping(value="/register.do")    //接收封装参数的对象    public String register(Model model,User user){        model.addAttribute("message", "register");        System.out.println(user.getUserName() +":"+user.getAge()+":"+user.getHeridate());        return "/jsp/success.jsp";    }    //接收数组    @RequestMapping("/bye.do")    public String bye(Model model){        model.addAttribute("message", "bye");        return "/jsp/success.jsp";    }    @RequestMapping("/deleteAll.do")    public String deleteAll(Model model,int[] ids){        model.addAttribute("message", "deleteAll");        return "/jsp/success.jsp";    }    //接收list封装的参数    @RequestMapping("/addAll.do")    public String addAll(Model model,Bean bean){        for (int i = 0; i < bean.getEmpList().size(); i++) {            System.out.println(                    bean.getEmpList().get(i).getUserName()+":"                    +bean.getEmpList().get(i).getAge());        }        model.addAttribute("message", "addAll");        return "/jsp/success.jsp";    }   }

5.结果的转发和重定向

@Controller@RequestMapping("/emp")public class EmpAction {    @RequestMapping("/findById.do")    public String findById(String id){        System.out.println("findByid  id = "+id);        //return "forward:/emp/updateById.do";        return "redirect:/emp/updateById.do";    }       @RequestMapping("/updateById.do")        public String updateById(String id,Model model){        System.out.println("updateById  id = "+id);        model.addAttribute("message",id);        return "/jsp/success.jsp";    }   }

6.以Json形式作为请求参数和返回值类型

@Controller@RequestMapping("/json")public class EmpAction {    @RequestMapping("/bean2json.do")    public @ResponseBody Emp bean2json(){        System.out.println("bean2json");        Emp emp = new Emp();        emp.setUserName("大明");        emp.setAge("20");        return emp;    }       @RequestMapping("/map2json.do")    public @ResponseBody Map map2json(){        Map map = new HashMap<String, Object>();        List<Emp> list = new ArrayList<Emp>();        System.out.println("map2json");        Emp emp = new Emp();        emp.setUserName("大明");        emp.setAge("20");        list.add(emp);        list.add(emp);        map.put("empList",list);        map.put("rows",list.size());        return map;    }       @RequestMapping("/list2json.do")    public @ResponseBody List<Emp> list2json(){        System.out.println("list2json");        List<Emp> list = new ArrayList<Emp>();        Emp emp = new Emp();        emp.setUserName("大明");        emp.setAge("20");        list.add(emp);        list.add(emp);        return list;    }       @RequestMapping("/requestjson.do")    public @ResponseBody String requestjson(@RequestBody Emp emp){        System.out.println(emp.getUserName()+":"+emp.getAge());        return "haha";    }   }
0 0
原创粉丝点击