SpringMVC常用方法深入学习---@Controller

本篇博客知识点
1.快速搭建SpringMVC框架
2.SpringMVC常用方法学习

快速搭建SpringMVC

1.需要准备常用的包
这里写图片描述
2.配置好web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
    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_3_0.xsd">
  <display-name></display-name>

   <!-- 添加Spring的容器和配置文件位置 -->
   <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            classpath:beans.xml
        </param-value>
   </context-param>
   <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
   </listener>

  <!-- 配置spring的这个过滤器,让Controller支持中文post提交 -->
  <filter>
    <filter-name>char</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>

  <!-- 专用于帮助把post请求转换成put方式的过滤器 -->
  <filter>
    <filter-name>method</filter-name>
    <filter-class>
        org.springframework.web.filter.HiddenHttpMethodFilter
    </filter-class>
  </filter>

  <filter-mapping>
    <filter-name>char</filter-name>
    <servlet-name>hncu</servlet-name>
  </filter-mapping>
  <filter-mapping>
    <filter-name>method</filter-name>
    <servlet-name>hncu</servlet-name>
  </filter-mapping>

  <servlet>
    <servlet-name>hncu</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>namespace</param-name>
        <param-value>hncu-servlet</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>hncu</servlet-name>
    <url-pattern>/sp/*</url-pattern>
  </servlet-mapping>


  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

3.这里面有个容器的问题—用来配置SpringMVC容器的。hncu-servlet.xml 还有一个用来配置Spring的容器的,beans.xml. 其实两个可以只写springMVC的容器(必须有),spring的beans.xml可以不写。我习惯写beans.xml所以我把hncu-servlet.xml 写了个空的。
hncu-servlet.xml容器
这里写图片描述
beans.xml的主要内容

 <!-- 把两个容器加到一起 -->
        <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
        <!-- 加一个用于识别注解的核心类 -->
        <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"></bean>
        <!-- 加一个自动扫描添加beans -->
        <context:component-scan base-package="cn.hncu.anno"></context:component-scan>
        <!-- 配置映射视图 -->
         <bean class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
            <property name="basenames">
                <list>
                <!-- 默认查询classpath: hncu.properties  -->
                    <value>hncu</value>
                </list>
            </property>
            <property name="defaultParentView" value="hncu"></property>
        </bean>

3.可以先把映射视图的配置文件写好~
这里写图片描述
4.可以直接写方法了~ 先测试一下是否成功,代码和测试连接
这里写图片描述
结果~
这里写图片描述

SpringMVC常用方法学习

1.演示收集参数

请求的url:http://localhost:8080/SpringMVCLearning/sp/one?name=Jack&age=18

代码以及结果
这里写图片描述

要求就是前段的参数请求名和后台的参数名保存一直(这里就是name,age)
如果不保存一直可以通过下列方法实现
请求连接把name参数改为Name age改为Age

http://localhost:8080/SpringMVCLearning/sp/one?Name=Jack&Age=18

代码和结果
这里写图片描述

还可以设置@@RequestParam(name=”name”,required=true)设置为参数必须提交,即前端必须 有一个“name=”,没有则会挂
访问路径如下,不提交参数

http://localhost:8080/SpringMVCLearning/sp/one

测试代码和结果
这里写图片描述

2.演示限定提交方法
想定提交方式为POST,核心代码

@RequestMapping(value="/one",method=(RequestMethod.POST))

测试,当我通过地址栏直接输入(get)方式提交时,结果会挂

访问路径:http://localhost:8080/SpringMVCLearning/sp/one?name=jack&age=25

代码和测试结果
这里写图片描述
再测试POST方式提交
主页代码和结果
这里写图片描述

3.演示从URL路径获取参数
主页参数放在访问路径的形式,同时代码中也要限制
@RequestMapping(value=”/one/{name}/{age}”)

访问路径:http://localhost:8080/SpringMVCLearning/sp/one/jack/25

测试结果和代码
这里写图片描述

4.演示提交参数和请求头的限定
4.1提交的参数必须包含name且不能包含age
代码,和测试:有age时候失败
这里写图片描述
结果
这里写图片描述
代码,和测试:无age时候成功
这里写图片描述
结果~
这里写图片描述
4.2.防盗链(限定请求必须包含某key的参数) )
限制必须从站内访问,从地址栏输入则访问无效,
直接从地址栏输入,测试结果以及代码 访问不了
这里写图片描述
但是从主页,站内访问则没问题
这里写图片描述

这里写图片描述

5.演示将前台数据直接封装成值对象
User.java下面几个属性加set,get方法
这里写图片描述

其中一个属性是另外一个对象,Address,主要代码
这里写图片描述

接下来是前端的请求代码
这里写图片描述

后台的代码和测试
这里写图片描述

成功把数据封装好了,
这里写图片描述

6.演示注入同一个参数多个值的数据
如:兴趣hobby 可能包含 running basketball swimming多个怎么获得
请求路径如下

http://localhost:8080/SpringMVCLearning/sp/one?hobby=running&hobby=basketball&hobby=swimming

测试以及结果
这里写图片描述

7.注入其他类型数据:请求头的信息还有Cookie信息
测试代码以及结果
这里写图片描述

8:演示文件下载
访问路径

http://localhost:8080/SpringMVCLearning/sp/one

代码和结果
这里写图片描述

把下载的文件打开~ 没问题
这里写图片描述

9,演示文件上传
后台代码

//.文件上传
    @RequestMapping(value="/one")
    public void one(@RequestParam("file") MultipartFile file
                    ,HttpSession session) throws IOException{
        String path = session.getServletContext().getRealPath("/up");
        Streams.copy(file.getInputStream(), new FileOutputStream( path+"/"+file.getOriginalFilename()), true);
    }

前端请求表单代码

<form action="<c:url value='sp/one/'/>" method="post" enctype="multipart/form-data">
            附件:<input type="file" name="file"><br/>
            <input type="submit" value="文件上传">
        </form>

下面是一段上传多个文件的代码 和前面类似

@RequestMapping(value="/s10")  
    public String s10(@RequestParam("file") List<MultipartFile> files,HttpSession s) throws IOException{ //MultipartFile其实就是我们以前学底层时的FiltItem
        if(files!=null){
            String path = s.getServletContext().getRealPath("/up");
            for(MultipartFile file:files){
                if(file!=null && !file.isEmpty()){
                    Streams.copy(file.getInputStream(), new FileOutputStream(path+"/"+file.getOriginalFilename()), true);
                }
            }
        }
        return "hncu";
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值