本篇博客知识点
1.快速搭建SpringMVC框架
2.SpringMVC常用方法学习
<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>
<context-param>
<param-name>contextConfigLocationparam-name>
<param-value>
classpath:beans.xml
param-value>
context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
listener>
<filter>
<filter-name>charfilter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
<init-param>
<param-name>encodingparam-name>
<param-value>UTF-8param-value>
init-param>
filter>
<filter>
<filter-name>methodfilter-name>
<filter-class>
org.springframework.web.filter.HiddenHttpMethodFilter
filter-class>
filter>
<filter-mapping>
<filter-name>charfilter-name>
<servlet-name>hncuservlet-name>
filter-mapping>
<filter-mapping>
<filter-name>methodfilter-name>
<servlet-name>hncuservlet-name>
filter-mapping>
<servlet>
<servlet-name>hncuservlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
<init-param>
<param-name>namespaceparam-name>
<param-value>hncu-servletparam-value>
init-param>
<load-on-startup>1load-on-startup>
servlet>
<servlet-mapping>
<servlet-name>hncuservlet-name>
<url-pattern>/sp/*url-pattern>
servlet-mapping>
<welcome-file-list>
<welcome-file>index.jspwelcome-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>
<context:component-scan base-package="cn.hncu.anno">context:component-scan>
<bean class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
<property name="basenames">
<list>
<value>hncuvalue>
list>
property>
<property name="defaultParentView" value="hncu">property>
bean>
3.可以先把映射视图的配置文件写好~
4.可以直接写方法了~ 先测试一下是否成功,代码和测试连接
结果~
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
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方法
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);
}
前端请求表单代码
下面是一段上传多个文件的代码 和前面类似
@RequestMapping(value="/s10")
public String s10(@RequestParam("file") List 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";
}