SpringMVC框架1(前言、springmvc框架搭建、springmvc的四种接受参数方式、springmvc结合ajax)

SpringMVC框架

1.学习SpringMVC前言

[1]目前学习的知识

Mybatis-------解决sql语句和java代码块之间的耦合----优化了dao层
spring-----解决业务层和其他各层之间的耦合-----优化了service层
springMVC-----解决java代码和servlet之间的耦合------优化了controlller层

[2]为什么学习springMVC?

现在遇到的问题:
A、我们发现,每当后台发送一个请求,就对应后台一个servlet。如果用户有100个请求,就需要为用户书写100个servlet。
B、使用现在的servlet进行页面的数据接受时,我们发现相当的麻烦。有多少个参数,就要写多少条req.getParamater("")语句。
C、我们书写的java代码和servlet之间耦合度太高。

[3]解决方案

springMVC
springmvc就是对servlet进行的封装,实现了java代码个servlet之间的解耦。

[4]springMVC的概念

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。
类似框架:Struts 2、JFinal

2.SpringMVC的框架搭建

[1]导包

在这里插入图片描述

[2]配置web.xml文件
	<servlet>
        <servlet-name>mvc</servlet-name>
        <!--  在spring-webmvc jar包下-->
       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
       <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>mvc</servlet-name>
        <!-- /表示出了jsp外的所有请求资源-->
        <url-pattern>/</url-pattern>
    </servlet-mapping>
[3]配置扫描文件
		<!--扫描注解@Controller("abc")-->
        <context:component-scan base-package="cn.qt.controller"></context:component-scan>
        <!--扫描@RequestMapping-->
        <mvc:annotation-driven></mvc:annotation-driven>
		<!-- 静态资源的放行-->
        <!-- mapping:指代的是网络的地址  location:指代的是方行本地的什么资源 -->
        <mvc:resources mapping="/img/**" location="/img/"></mvc:resources>
        <mvc:resources mapping="/css/**" location="/css/"></mvc:resources>
        <mvc:resources mapping="/js/**" location="/js/"></mvc:resources>
[4]书写自己的单元控制方法
package cn.qt.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class MyController {
    @RequestMapping("abc")
    public String demo1(){
        //接受页面数据
        //处理数据
        System.out.println("进入了demo");
        //做出响应	
        //转发到名为index.jsp的文件
        return "index.jsp";
    }
}

3.SpringMVC进行参数接收

前端页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>用户注册</title>
</head>
<body>
<form action="demo04" method="post">
    <p>
        姓名:<input type="text" name="name" />
    </p>
    <p>
        密码:<input type="text" name="pwd" />
    </p>
    <p>
        年龄:<input type="text" name="age" />
    </p>
    <p>
        爱好:
        吃:<input type="checkbox" name="hobby" value="chi" />
        喝:<input type="checkbox" name="hobby" value="he" />
        睡:<input type="checkbox" name="hobby" value="shui" />
    </p>
    <p>
        生日:<input type="text" name="birth"/>
    </p>
    <p>
        <input type="submit" value="提交" />
    </p>
    <a href="demo05/sxt/987">get方式访问demo5</a>
</form>
</body>
</html>

[1]方式一
/*
    * 参数获得方式一:
    * String name = request.getParameter("name");
    * 注意:我们需要的内置对象可以当做参数进行传递过来直接使用
    * */
    @RequestMapping("demo01")
    public String demo1(HttpServletRequest request){
        //接受页面信息
        String name = request.getParameter("name");
        String pwd = request.getParameter("pwd");
        //处理数据
        System.out.println(name+"---"+pwd);
        //做出响应
        return "success.jsp";
    }
[2]方式二
/*
    * 获取参数方式二:
    * 注意:使用这种方式进行数据接受时,需要保证形参名和前台form表单name的值必须一致
    * 400:数据类型转化处理错误!!!
    * */
    @RequestMapping("demo02")
    public String demo02(String name,String pwd,int age){

        System.out.println(name+"--"+pwd+"--"+age);

        return "success.jsp";
    }
[3]方式三
/*
    * 获取参数方式三:
    *       参数可以直接使用参数进行接收
    *   使用对象进行接收参数时需要注意:
    *   表单中的name属性必须和接收参数对象中的实体属性名保持一致
    * */
    @RequestMapping("demo03")
    public String demo03(User user){
        System.out.println(user);
        return "success.jsp";
    }
[4]方式四
/*
    * 获取参数方式四:
    * 可以接收字符串或者字符串数组
    *
    * sql中的Date:只含有年月日
    * util中的Date:不仅含有年月日,还有时分秒
    *@DateTimeFormat:接收日期格式的数据,也可以写在实体类的属性中
    * @DateTimeFormat(pattern = "HH:mm:ss"):接收指定日期格式数据
    * */
    @RequestMapping("demo04")
    public String demo04(String[] hobby,@DateTimeFormat(pattern = "HH:mm:ss") Date birth){
        System.out.println(hobby[0]+birth);
        return "success.jsp";
    }
[5]使用RESTFUL的方式传递数据
/*
    * /springmvc01/demo05/sxt/987
    * RESTFUL是一种数据传递的方式,使数据传递变得更安全
    * */
    @RequestMapping("/demo05/{name}/{pwd}")
    public String demo05(@PathVariable String name,@PathVariable String pwd){
        System.out.println(name+"--"+pwd);
        return "success.jsp";
    }

4.SSM框架整合

  1. 导包
    在这里插入图片描述

  2. 配置各种xml文件
    applicationContext-*.xml
    springmvc.xml

  3. 在web.xml中进行文件解析

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <display-name>ssm_login</display-name>
    <!--用来解析applicationContext-*.xml-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext-*.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!--读取解析springmvc.xml-->
    <servlet>
        <servlet-name>mvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>mvc</servlet-name>
        <!-- /表示出了jsp外的所有请求资源-->
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>
  1. 书写各种包中的代码即可

5.springMVC结合AJAx的使用

[1]传统方式结合ajax
	/*
    * 使用传统的方式做出ajax响应
    * */
    @RequestMapping("ajax1")
    public void ajax1(String name,HttpServletResponse resp) throws IOException {
        resp.setContentType("text/html;charset=utf-8");
        //获取页面参数
        //处理数据
        Student student = new Student(name,"男",18);
        //做出响应
        String json = new Gson().toJson(student);
        resp.getWriter().println(json);
    }
[2]springmvc方式结合ajax
    /*
    * springmvc 结合ajax的使用
    *   注意:
    *       A、方法的返回值可以是对象或集合,需要在方法上添加@ResponseBody
    *       B、响应给前台的对象直接是json对象,需要gson jar包或者是jackson jar包
    *       jackson jar包更契合spring框架
    *  @RequestMapping(value = "ajax2",produces = "text/html;charset=GBK")表示:
    *           请求的url为ajax2,响应数据为json格式,字符串charset为GBK
    *
    * */
    @RequestMapping(value = "ajax2",produces = "application/json;charset=gbk")
    @ResponseBody
    public Student ajax2(String name){
        Student student = new Student(name, "男", 18);
        return student;
    }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值