spring mvc总结

                               目录

1.  Part1: springmvc总结

2.  Part2: Spring mvc框架搭建步骤

3.  Part3:Springmvc基于注解的实现

4.  Part4:HandleMapping(处理器映射)实现的方式有三种

5.  Part4:参数传递的3种方式

6. Part5:返回页面数据的四种方式

7.  Part6:Springmvc ajax(基于注解)

 

                       Part1: springmvc总结

1.springmvc是一个mvc框架,通过实现MVC很好的将数据,业务,展现进行分离。

2.springmvc设计围绕DispatcherServlet展开的,由DispatcherServlet负责将请求派发到特定的handler.

                    Part2: Spring mvc框架搭建步骤

1.创建工程,并把springmvc相关的jar包拷贝进项目。

2.配置web.xml,主要配DispatcherServlet(前端控制器),以下代码进行配置。

 <servlet>

     <servlet-name>springmvc</servlet-name>

      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

     

  </servlet>

  <servlet-mapping>

    <servlet-name>springmvc</servlet-name>

    <url-pattern>*.do</url-pattern>

  </servlet-mapping>

3.在WEB-INF下创建springmvc的配置文件,[servletname]-servlet.xml,文件名必须为springmvc-servlet.xml

4.配置HandlerMapping 根据beanname找到对应Controller(可以省略)

 <!-- 配置HandlerMapping,根据beanname找到对应的Controller(可以省略) -->

        <bean class="org.springframework.web.servlet.mvc.support.ControllerBeanNameHandlerMapping"></bean>

5.创建jsp页面,需要发出请求页面

6.创建HelloController继承AbstractController重写handleRequestInternal

//返回数据和页面

ModelAndView mav = new ModelAndView("index");

mav.addObject("helloword","hello "+hello);

7.配置视图解析器

<!-- 配置视图解析器 -->

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

            <!-- 前缀 -->

            <property name="prefix" value="/view/"></property>

            <!-- 后缀 -->

            <property name="suffix" value=".jsp"></property>

       </bean>

8.处理乱码问题: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>

 

                     Part3:Springmvc基于注解的实现

1.创建工程,并把springmvc相关的jar包拷贝进项目。

2.配置web.xml,主要配DispatcherServlet(前端控制器),以下代码进行配置。

 <servlet>

     <servlet-name>springmvc</servlet-name>

      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

     

  </servlet>

  <servlet-mapping>

    <servlet-name>springmvc</servlet-name>

    <url-pattern>*.do</url-pattern>

  </servlet-mapping>

3.在WEB-INF下创建springmvc的配置文件,[servletname]-servlet.xml,文件名必须为springmvc-servlet.xml

4.springmvc-servlet.xml中配置注解驱动

<!-- springmvc注解驱动 -->

        <mvc:annotation-driven></mvc:annotation-driven>

5.springmvc-servlet.xml中添加扫描器,用于扫描的目标的包或类。

<!-- 扫描器 -->

        <context:component-scan base-package="com"></context:component-scan>

 

6.新增包,里边添加Controller,配置如下:

 

 

 

package com;

 

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

 

 

@Controller

@RequestMapping("/user")

public class UserController{

 

@RequestMapping(value="/list.do")

public String list(){

System.out.print("=======*=======");

return "user_list";

}

 

}

         Part4:HandleMapping(处理器映射)实现的方式有三种

1.根据Beanname访问Controller

        <!--1. 配置HandlerMapping,根据beanname找到对应的Controller(可以省略) -->

        <bean class="org.springframework.web.servlet.mvc.support.ControllerBeanNameHandlerMapping"></bean>

        

        <!-- 配置controller -->

        <bean name="/hello.do" class="com.UserController"></bean>

2.根据url访问Controller

<!--2. 通过简单url来查找Controller -->

        <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

           <property name="mappings">

              <props>

                 <prop key="/userInfo.do">userController</prop>

              </props>

           </property>

        </bean>

        <bean id="userController" class="com.UserController"></bean>

3.根据Controller类名访问访问Controller,访问时类名首字母需要小写

 <!-- 控制类的类名访问controller,访问时类名首字母需要小写 -->

        <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean>

        

        <bean class="com.UserController"></bean>

 

                          Part5:参数传递的3种方式

1.通过设置HttpServletRequest request来获取数据

@RequestMapping(value="/add.do")

public String add(HttpServletRequest request,HttpServletResponse responce){

String userName=request.getParameter("userName");

String passWord=request.getParameter("passWord");

System.out.print("=======*======="+userName+"====="+passWord);

return "user_list";

}

2.直接设置参数

@RequestMapping(value="/add1.do")

public String add1(String userName,String passWord){

System.out.print("=======*======="+userName+"====="+passWord);

return "user_list";

}

3.通过对象

(1)Controller编写

    @RequestMapping(value="/add2.do")

public String add2(UserInfo userinfo){

System.out.print("=======*======="+userinfo);

return "user_list";

}

(2)对象类的编写

package com.pojo;

 

import java.util.Arrays;

 

 

public class UserInfo{

 

private String userName;

 

private String passWord;

 

private String[]  userxq;

 

public String getUserName() {

return userName;

}

 

public void setUserName(String userName) {

this.userName = userName;

}

 

public String getPassWord() {

return passWord;

}

 

public void setPassWord(String passWord) {

this.passWord = passWord;

}

 

public String[] getUserxq() {

return userxq;

}

 

public void setUserxq(String[] userxq) {

this.userxq = userxq;

}

 

@Override

public String toString() {

return "UserInfo [passWord=" + passWord + ", userName=" + userName

+ ", userxq=" + Arrays.toString(userxq) + "]";

}

}

 

总结:

/**

 * 时间属性编辑器

 * @param bin

 */

@InitBinder

public void initBinder(ServletRequestDataBinder bin){

 

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

 

CustomDateEditor cust=new CustomDateEditor(sdf, true);

 

bin.registerCustomEditor(Date.class, cust);

}

                      Part6:返回页面数据的四种方式

1.通过设置HttpServletRequest request来返回数据

@RequestMapping(value="/add.do")

public String add(HttpServletRequest request,HttpServletResponse responce){

String userName=request.getParameter("userName");

String passWord=request.getParameter("passWord");

request.setAttribute("userName", "还是");

return "user_list";

}

2.通过ModelAndView返回数据

@RequestMapping(value="/add1.do")

public ModelAndView add1(){

ModelAndView mav=new ModelAndView("user_list");

mav.addObject("userName","样");

return mav;

}

3.通过Model返回数据

@RequestMapping(value="/add2.do")

public String add2(Model model){

model.addAttribute("userName", "丽莎");

return "user_list";

}

4.通过Map返回数据

@RequestMapping(value="/add3.do")

public String add3(Map map){

map.put("userName", "嘻嘻");

return "user_list";

}

 

                  Part7:Springmvc ajax(基于注解)

1.新增jar包处理json数据的

2.新建jsp页面,引入jquery.js

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <base href="<%=basePath%>">

    

    <title>My JSP 'index.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">    

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="This is my page">

<script type="text/javascript" src="js/jquery-1.7.2.js"></script>

<script>

   $(function(){

    $("#but01").click(function(){

    var userName=$("#userName").val();

        var userName=$("#userName").val();

         $.post("<%=basePath%>ajaxUser.do",{userName:userName},function(data){

           alert(data);

         });

     });

     $("#but02").click(function(){

    var userName=$("#userName").val();

        var userName=$("#userName").val();

         $.post("<%=basePath%>ajaxUser1.do",{userName:userName},function(data){

           alert(data.userName);

         },"json");

     });

     });

   

   

</script>

  </head>

 

  <body>

  用户名1:<input type="text" id="userName"/>

      <input type="button" id="but01"/>

      

   用户名2:<input type="text" id="userName"/>

      <input type="button" id="but02"/>

   </body>

</html>

 

 

3.设置springmvc-servlet.xml用于异步返回json数据

<!-- 从请求和响应读取/编写字符串 -->

        <bean id="stringHttpMessage" class="org.springframework.http.converter.StringHttpMessageConverter">

           <property name="supportedMediaTypes">

              <list>

                 <value>text/plain;charset=UTF-8</value>

              </list>

           </property>

        </bean>

        

        <!-- 用于将对象转化为JSON -->

        <bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>

        

        <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">

           <property name="messageConverters">

              <list>

                 <ref bean="stringHttpMessage" />

                  <ref bean="jsonConverter" />

              </list>

           </property>

        </bean>

4.设置Controller处理ajaxUser1用于返回json数据

package com;

 

import java.io.PrintWriter;

 

import javax.servlet.http.HttpServletResponse;

 

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseBody;

 

import com.pojo.UserInfo;

 

 

@Controller

public class UserController{

 

@RequestMapping(value="/ajaxUser.do")

public String ajaxUser(String userName,HttpServletResponse responce){

try{

responce.setContentType("text/html");

responce.setCharacterEncoding("utf-8");

PrintWriter out=responce.getWriter();

out.println("userName==="+userName);

out.flush();

out.close();

}

catch (Exception e) {

e.printStackTrace();

// TODO: handle exception

}

return "user_list";

}

 

 

@RequestMapping(value="/ajaxUser1.do")

public @ResponseBody UserInfo ajaxUser1(String userName){

UserInfo userInfo = new UserInfo();

 

userInfo.setUserName(userName);

userInfo.setPassWord("123456");

 

return userInfo;

}

 

}

 

 

 

 

转载于:https://my.oschina.net/yangfeima/blog/784806

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值