以下为《SpringMVC概述》的无排版文字预览,完整内容请下载
SpringMVC
1.概述
2.MVC
3.SpringMVC中的核心组件
前端控制器
派发器
控制器
视图
视图解析器
4.入门案例
创建maven的webapp项目
引入依赖
填充项目结构
配置springmvc的五大组件
在web.xml中配置前端控制器(DispatchServlet)
在springmvc.xml中配置派发器(HandlderMapping)
新建一个类实现Controller接口(控制器Controller)
Controller返回ModelAndView,ModelAndView绑定视图和数据
视图解析器(ViewResolver)解析视图完成跳转
配置tomcat,启动服务
/
基于注解的入门案例
/
/
获取请求参数的几种方式:
通过传统的请求对象来获取请求参数
在springmvc中,当表单的标签的name属性的值和当前方法的形参一致时,springmvc就 可以获取当前表单数据
当表单的标签的name属性的值和当前方法的形参不一致时,可以使用@RequestParam注解来获取对应的值
通过实体类对象进行封装,获取请求参数
package com.tedu.controller;
import com.tedu.entity.Account;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
@Controller
@RequestMapping("/account")
public class AccountController {
/**
* 1.在springmvc中,当表单的标签的name属性的值和当前方法的形参一致时,springmvc就可以
* 获取当前表单数据
* 2.当表单的标签的name属性的值和当前方法的形参不一致时,可以使用@RequestParam注解来获取对应的值
* 3.通过请求对象(HttpServletRequest)进行参数的获取,通过请求对象可以进行更多操作
* 4.使用实体类对象进行数据封装,来获取请求参数,实体类对象的set方法的名字必须和表单name属性的值一致
* @param s_account
* @param password
* @param email
* @return
*/
// @RequestMapping("/save")
// public String saveAccount(@RequestParam("account")String s_account, String password, String email){
// System.out.println(s_account);
// System.out.println(password);
// System.out.println(email);
// return "success";
// }
// @RequestMapping("/save")
// public String saveAccount1(HttpServletRequest req){
// String s_account = req.getParameter("account");
// String password = req.getParameter("password");
// String email = req.getParameter("email");
// HttpSession session = req.getSession();
// System.out.println(s_account);
// System.out.println(password);
// System.out.println(email);
// return "success";
// }
@RequestMapping("/save")
public String saveAccount2(Account account){
System.out.println(account);
return "success";
}
}
向页面传值:
1.通过请求对象和session对象
2.通过ModelAndView对象传值
3.通过ModelMap对象进行传值
package com.tedu.controller;
import com.tedu.entity.Account;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.HashMap;
import java.util.Map;
@Controller
@RequestMapping("/account")
public class AccountController {
/**
* 1.在springmvc中,当表单的标签的name属性的值和当前方法的形参一致时,springmvc就可以
* 获取当前表单数据
* 2.当表单的标签的name属性的值和当前方法的形参不一致时,可以使用@RequestParam注解来获取对应的值
* 3.通过请求对象(HttpServletRequest)进行参数的获取,通过请求对象可以进行更多操作
* 4.使用实体类对象进行数据封装,来获取请求参数,实体类对象的set方法的名字必须和表单name属性的值一致
* @param s_account
* @param password
* @param email
* @return
*/
// @RequestMapping("/save")
// public String saveAccount(@RequestParam("account")String s_account, String password, String email,HttpServletRequest req){
// System.out.println(s_account);
// System.out.println(password);
// System.out.println(email);
// req.setAttribute("name","admin_admin_admin");
// HttpSession session = req.getSession();
// session.setAttribute("age","150");
// return "success";
// }
// @RequestMapping("/save")
// public ModelAndView saveAccount(){
// String name = "qwer";
// /*map集合就是需要传递的数据*/
// Map map = new HashMap();
// map.put("name1",name);
// map.put("age1",20);
// /*携带数据和具体需要跳转的页面*/
// ModelAndView model = new ModelAndView("success1",map);
// return model;
// }
/* @RequestMapping("/save")
public String saveAccount(ModelMap model){
String name = "zhoujin";
int age = 18;
model.addAttribute("name1",name);
model.addAttribute("age1",age);
return "success1";
}*/
/**
* 向页面传值的几种方式:
* 1.通过请求对象和session对象
* 2.通过ModelAndView对象传值
* 3.通过ModelMap对象进行传值
*/
// @RequestMapping("/save")
// public String saveAccount1(HttpServletRequest req){
// String s_account = req.getParameter("account");
// String password = req.getParameter("password");
// String email = req.getParameter("email");
// HttpSession session = req.getSession();
// System.out.println(s_account);
// System.out.println(password);
// System.out.println(email);
// return "success";
// }
// @RequestMapping("/save")
// public String saveAccount2(Account account){
// System.out.println(account);
// return "success";
// }
}
处理乱码问题:
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
encodingFilter
/*
重定向
获取JSON对象和响应JSON对象
1.从前端发送JSON对象到后台服务器
后台需要使用的注解是@RequestBody
2.从后台服务器响应JSON对象给前端
后台需要使用的注解是@ResponseBody
释放静态资源(因为前端控制器拦截了所有的请求,因此静态资源也被拦截,可以通过以下配置释放静态资源)
2.从前端页面使用ajax发送JSON对象到后台,后台需要使用@RequestBody注解来获取JSON对象
$(function () {
$("#btn").click(function () {
$.ajax({
url:"test/ajaxJson",
contentType:"application/json;charset=UTF-8",
data:"{'name':'张三','age':18}",
type:"post",
success:function (data) {
alert(data);
}
});
});
});
$(function () {
$("#btn").click(function () {
$.ajax({
url:"test/ajaxJson",
contentType:"application/json;charset=UTF-8",
data:"{'name':'张三','age':18}",
type:"post",
success:function (data) {
alert(data);
}
});
});
});
@Controller
@RequestMapping("/test")
public class JSONController {
@RequestMapping("/ajaxJson")
public String ajaxJson(@RequestBody String json){
System.out.println(json);
return "success";
}
}
从后台响应JSON对象到前端
@RequestMapping("/ajaxJson")
@ResponseBody
public User ajaxJson(@RequestBody String body){
System.out.println(body);
User u = new User();
u.setName("哈哈");
u.setAge(20);
return u;
}
上传文件
1.上传文件表单的ContentType类型必须是multipart/form-data
2.上传文件必须使用POST请求
/
1.传统文件上传
表单必须以及multipart/form-data方式提交
表单必须用POST提交
引入依赖commons-fileupload,commons-io
@RequestMapping("/fileUpLoad")
public String testFileUpLoad(HttpServletRequest request) throws Exception {
System.out.println("上传文件");
//1.确定文件上传的位置
ServletContext servletContext = request.getSession().getServletContext();
String path = servletContext.getRealPath("/images/");
File file = new File(path);
if(!file.exists()){
file.mkdirs();
}
//2.拿到文件(通过解析请求对象(request)拿到上传文件)
//2.1通过commons-fileupload拿到磁盘文件项工厂对象
DiskFileItemFactory factory = new DiskFileItemFactory();
//2.2解析请求对象
ServletFileUpload fileUpload = new ServletFileUpload(factory);
内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 //获取文件的名字
String filename = item.getName();
String suffix = filename.substring(filename.indexOf("."));
// long l = System.currentTimeMillis();
String newName = UUID.randomUUID().toString();
//写入文件
item.write(new File(path,newName+suffix));
}
}
return "success";
}
2.springmvc文件上传
/
表单必须以及multipart/form-data方式提交
表单必须用POST提交
配置文件解析器
控制层拿到解析的文件进行存储
表单
/
配置文件解析器
/
控制层
/
[文章尾部最后500字内容到此结束,中间部分内容请查看底下的图片预览]请点击下方选择您需要的文档下载。
以上为《SpringMVC概述》的无排版文字预览,完整内容请下载
SpringMVC概述由用户“liuzhenhua1986”分享发布,转载请注明出处