【SpringMvc】的入门程序和执行过程详解

1.Springmvc是什么?
Springmvc是一个web层mvc框架,类似struts2.
这里写图片描述

2.Springmvc入门程序

  • 2.1创建一个maven工程
    这里写图片描述

  • 2.2配置web.xml
    这里写图片描述

  • 2.3配置springmvc.xml
    这里写图片描述

  • 2.4自定义Controller
    这里写图片描述

  • 2.5定义视图页面
    这里写图片描述

  • 2.6根据代码分析springmvc执行流程
    这里写图片描述

  • 2.7适配器源码
    这里写图片描述

3.中文乱码解决

-3.1Get请求乱码
这里写图片描述

  • 3.2Post乱码
    Spring编码过滤器:在web.xml配置
<filter>
  <filter-name>characterEncoding</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>characterEncoding</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

4.注解开发

  • 4.1创建一个web工程,并导入jar,配置web.xml
<!-- Spring编码过滤器 -->
<filter>
  <filter-name>characterEncoding</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>characterEncoding</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>


<!-- 配置前端控制器DispatcherServlet -->   
<servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!-- 
        默认加载方式:默认加载文件必须规范
            文件命名:servlet-name-servlet.xml======springmvc-servlet.xml
            路径规范:必须在WEB-INF目录下面
     -->
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:/springmvc.xml</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>
  • 4.2配置springmvc.xml
<context:component-scan base-package="com.springmvc.assess" />

<mvc:annotation-driven />

<bean id="viewResolver"
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/"></property>
    <property name="suffix" value=".jsp"></property>
</bean>
@Controller
public class LoginController {
    @RequestMapping("/toLogin")
    public String toLogin(){
        return "login";
    }
}

这里写图片描述

5.封装参数
基本类型,int,String等等基本类型、Pojo类型、包装类型。Springmvc默认支持类型:HttpSession,HttpRequstServlet,Model等等。Springmvc参数封装:基于方法进行封装。

  • 5.1封装int类型参数
    页面传递参数都是字符串。
    这里写图片描述
    接受参数方法
    这里写图片描述
  • 5.2接受字符串类型
    这里写图片描述
    接受参数方法
    这里写图片描述
  • 5.3接受数组
    checkbox复选框,Value必须有值。
    这里写图片描述
    接受参数方法
    这里写图片描述
  • 5.4接受Pojo
    这里写图片描述
    注意:input框中的name的名称需要和pojo中的属性保持一致
    这里写图片描述

  • 5.5接受包装类型参数

public class userCustom{
    private user user;
    private List<User> userList;
    private Map<K,V> maps;  
    private items items;
    ......
    省略getXxx()和setXxx()
}

这里写图片描述
接受参数方法
这里写图片描述

  • 5.6接受集合类型参数
    接受list集合
    这里写图片描述
    接受参数方法
    这里写图片描述
  • 5.7接受map
    这里写图片描述
    接受参数方法
    这里写图片描述

6.springmvc和struts2区别
实现机制:
Struts2是基于过滤器实现的;Springmvc基于servlet实现,Servlet比过滤器快。
运行速度:
Struts2是多列,请求来了以后,struts2创建多少个对象:ActionContext,valuestack,UserAction,ActionSuport,ModelDriven,UserAction里面属性:User对象,userlist集合等;Springmvc是单列。
参数封装来分析:
Struts基于属性进行封装;Springmvc基于方法封装。

7.页面回显

//查询所有
@RequestMapping("list")
public String list(Model model){
    //model 相当于application域对象
    List<User> userList = new ArrayList<User>();    
    User user1 = new User();
    user1.setId(1);
    user1.setSex("男");
    user1.setUsername("张山峰");
    user1.setAddress("武当山");
    user1.setBirthday(new Date());

    User user2 = new User();
    user2.setId(2);
    user2.setSex("男");
    user2.setUsername("张无忌");
    user2.setAddress("武当山");
    user2.setBirthday(new Date());

    userList.add(user1);
    userList.add(user2);        
    model.addAttribute("userList", userList);   
    return "list";      
}

页面获取:

这里写图片描述

这里写图片描述
这里写图片描述

8.URL模版映射

  • 8.1url模版映射过程

这里写图片描述

  • Restfull风格设计
    这里写图片描述
    Web.xml拦截方式:在rest目录下所有请求都被拦截,servlet可以拦截目录。
    这里写图片描述
    {}:匹配接受页面Url路径参数
    @Pathariable:{}里面参数注入后面参数里面
    这里写图片描述

9.转发和重定向

  • 9.1 转发forward
    本类进行转发:本类方法与方法之间进行forward。
    方式一:return ”forward:list.do“;
    这里写图片描述
    方式二:return ”forward:/user/list.do“;
    这里写图片描述
    注意:user根路径前面必须有/.

    跨类进行转发,转发方式:return ”forward:/items/list.do“;
    这里写图片描述

  • 9.2重定向redirect
    重定向方式:return ”redirect:list.do“;
    这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值