072天
行百里者半九十,想要在一个行业里成为顶尖人才,一定满足一万小时定律,要想学好JAVA,需要持之以恒不断地努力,每天都要勤思考+善于询问+解决问题!
知识温故而知新>>>>>>
JSP中的EL表达式

image.png
今天学到的知识>>>>>>
springmvc与ajax结合
//传递给前台的是json对象
@RequestMapping(value = "ajax2",produces ="application/json;charset=UTF-8")
@ResponseBody
public Student ajax2(String name){
//[1]接受页面数据
//[2]数据的处理
Student student=new Student(18,"张三","男");
//[3]做出响应
return student;
}
sprig中控制器常用的返回值类型
**
* SpringMVC中控制器的返回值类型
* 1.返回值类型为字符串:String (常用)
* 2.返回值类型为:void --->用于处理ajax请求
* 3.返回值类型是Java对象(结合@ResponseBody将java对象转换为json对象) --->用于处理ajax请求
* 4.返回值类型为:View(了解)
* 5.返回值类型为:ModelAndView(常用)
*/
@Controller
@RequestMapping("mycon2")
public class MyController2 {
//测试返回值类型为View类型()
@RequestMapping("test1")
public View test1(){
View view = new InternalResourceView("/success.jsp");//相对当前项目的根目录,默认使用是请求转发
return view;
}
//返回值类型为ModelAndView
@RequestMapping("test2")
public ModelAndView test2(){
ModelAndView mv = new ModelAndView();
mv.setView(new InternalResourceView("/success.jsp"));
mv.addObject("msg", "test ModelAndView!");//相当于调用request.setAttribute("msg","test ModelAndView!");
return mv;
}
//返回值类型为String
@RequestMapping("test3")
public String test2(Model model){
model.addAttribute("msg", "test model!");//相当于调用request.setAttribute("msg","test model!");
return "/success.jsp";
}
}
SRP-MVC中请求转发与重定向
原因:
于 WebContent 这一层目录下面的页面,用户如果知道某个 jsp 页面可以直接访问。但是,通常情况下为了保证页面的安全,
我们一般的做法是在 WebContent 这一层目录下只留一个引导页面(index.jsp)作为跳转,把网站相关的页面放入 WEB-INF 文件夹下保护起来。因为放在 WEB-INF 文件夹下的页面没有办法通过地址栏直接访问,只能通过后台的跳转来间接的访问,所以就需要请求 SpingMVC 来返回相应的页面。
@RequestMapping( "test1" )
public String test1(){
//return "success.jsp";默认使用的请求转发
//return "/success.jsp";默认使用的请求转发
//默认使用请求转发时, 加不加"/"没有影响
//return "forward:/success.jsp";使用的请求转发(仅限于当前项目)
return("redirect:/success.jsp");
}
习题的情况总结>>>>>>
文件上传的步骤
[1]导包
image
[2]配置文件上传对象
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
</bean>
[3]创建save.jsp
<%--
Created by IntelliJ IDEA.
User: SXT
Date: 2019/8/24
Time: 14:53
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>用户注册</title>
</head>
<body>
<%--
必须注意:
[A] 提交方式method="post"
[B]enctype="multipart/form-data" 二进制流
-%>
<h3>用户添加</h3>
<form method="post" enctype="multipart/form-data" action="fileUpload">
<p>
用户名:<input type="text" name="name"/>${msg}
</p>
<p>
分数:<input type="text" name="score"/>
</p>
<p>
年龄:<input type="text" name="age"/>
</p>
<p>
文件:<input type="file" name="fi"/>
</p>
<p>
<input type="submit" value="提交"/>
</p>
</form>
</body>
</html>
[4]文件上传的代码
//文件的上传
@RequestMapping("fileUpload")
public String fileUpload(Student stu, MultipartFile fi, HttpServletRequest request)throws Exception{
String substring = fi.getOriginalFilename().substring(fi.getOriginalFilename().lastIndexOf("."));
/*****【F】判断文件的后缀******/
if(!(".png".equals(substring)||".gif".equals(substring)||".jpg".equals(substring))){
request.setAttribute("msg","上传文件必须是图片");
return "/save.jsp";
}
/****【E】限定上传文件的大小**/
/* if(fi.getSize()>20*1024){
request.setAttribute("msg","上传文件最大是20k");
return "forward:/save.jsp";
}*/
/*****【D】相同图片名称覆盖****/
String uuid = UUID.randomUUID().toString();
// fl.jpg
String filename =uuid+substring;
/****【C】获得服务器的目录******/
String realPath = request.getServletContext().getRealPath("/upload");
/**【B】自动创建文件目录**/
File file=new File(realPath);
if(!file.exists()){
file.mkdirs();
}
//文件上传完毕
fi.transferTo(new File(file,filename));
stu.setFilename(filename);
stu.setFiletype(fi.getContentType());
int save = studentService.save(stu);
if(save>0){
List<Student> list = studentService.findAll();
request.setAttribute("list",list);
//请求转发
return "success.jsp";
}else {
request.setAttribute("msg","添加失败");
return "forward:/save.jsp";
}
}
查询所有学生信息的方法
//查询所有学生信息
@RequestMapping("findall")
public String stuFindAll(HttpServletRequest req){
List<Student> list = studentService.findAll();
req.setAttribute("list",list);
return "success.jsp";
最终效果展示

image.png