SSM (3)SpringMVC

微笑、不失礼 提交于 2020-01-29 16:55:59
让指定的请求跳转到指定的页面,在springmvc.xml中配置mvc:view-controller即可。

mvc:view-controller:当我们发送一个请求时,如果没有找到对应的mapping

需要注意!使用时后边要添加:mvc:annotation-driven/

若不添加mvc:annotation-driven/,就无法使用正常的RequestMapping

<!--path为指定的请求,view-name为需要跳转的页面-->
<!--添加配置之后,就不需要再写@RequestMapping("Test")也可以跳转-->
<mvc:view-controller path="Test" view-name="/result.jsp"></mvc:view-controller>
<mvc:annotation-driven />
form标签

作用:

  • 它会自动的绑定来自Model中的一个属性值到当前form对应的实体对象
  • 它支持我们在提交表单的时候使用除GET和POST之外的其他方法进行提交,包括DELETE和PUT等

使用场景:

  • 当编辑时, 跳转到form表单页,传统模式要在跳转前先到数据库查询数据,然后进行表单数据回显
  • 使用form之前一定要保证有对应的bean,没有对应的bean时, 会自动以command为key到request域中查询,当找不到的时候, 会报异常

使用方式

  • 首先要在使用的jsp页面中引入标签库
<%@taglib uri="http://www.springframework.org/tags/form" prefix="fm" %>
  • 创建表单,首先要有一个User类
@Setter@Getter
public class User {
    private String name;
    private String age;
    private String gender;
    private String[] hobby = {"篮球","足球"};
    private Pet pet;

   
	@Override
	public String toString() {
	    return "User{" +
           	 "name='" + name + '\'' +
          	  ", age='" + age + '\'' +
          	  ", gender='" + gender + '\'' +
          	  ", hobby=" + Arrays.toString(hobby) +
          	  ", pet=" + pet +
          	  '}';
    }
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="fm" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>result来了</h1>
			<!--需要写创建的对象的名称-->
			<!--也可以不设置modelAttribute,只需要在处理请求的时候,将model.addAttribute("command",user);key值设置为command即可-->
   <fm:form >

    姓名:<fm:input path="name"/><br>
    年龄:<fm:input path="age"/><br>
    性别:<fm:radiobutton path="gender" value="1" label=""/>
    <fm:radiobutton path="gender" value="0" label=""/><br>
    <!--path写User里的属性,items写存放在model中的所有的爱好的key值-->
    爱好:<fm:checkboxes path="hobby" items="${allHobbys}"/> <%--复选框--%>
    宠物:<fm:select path="pet.id" items="${petList}" itemValue="id" itemLabel="name"/><%--下拉框--%>
</fm:form>
</body>
</html>
  • 处理请求(将User中,设置值,放在model里)
@RequestMapping("FormTest")
public String FormTest(Model model){
    //使用集合存放所有的爱好。
    ArrayList<Object> arrayList = new ArrayList<>();
    arrayList.add("篮球");
    arrayList.add("足球");
    arrayList.add("乒乓球");
    model.addAttribute("allHobbys",arrayList);
    //使用集合来存放所有的宠物类型
    ArrayList<Object> petList = new ArrayList<>();
    Pet pet1 = new Pet();
    pet1.setId(1);
    pet1.setName("狗");
    
    Pet pet2 = new Pet();
    pet2.setId(2);
    pet2.setName("猫");

    Pet pet3 = new Pet();
    pet3.setId(3);
    pet3.setName("老虎");
    //将宠物类型添加到List集合
    petList.add(pet1);
    petList.add(pet2);
    petList.add(pet3);
    //将List集合存在model中
    model.addAttribute("petList",petList);
    
    User user = new User();
    user.setName("itlike");
    user.setAge("10");
    user.setGender("1");
    user.setPet(pet2);//设置该用户的宠物为猫
    model.addAttribute("user",user);
    return "/result.jsp";
}

服务器表单校验

  1. 导入jar包,点击进入云盘
    在这里插入图片描述
  2. 在配置文件springmvc.xml当中写上mvc:annotation-driven/
  3. 在模型(User类)中添加对应校验规则 在这里插入图片描述
  4. 在处理器方法的入参标记@valid注解,并且让数据回显
    在这里插入图片描述
  5. 提交form表单后,跳到result2中,进行数据回显
    在这里插入图片描述
  6. 数据回显的效果图:
    在这里插入图片描述

访问静态资源

<img src="${pageContext.request.contextPath}/images/1.jpg">
  1. 像上边这样访问静态资源,但是会报错,是因为在web.xml中配置了ulr-pattern,会拦截
    在这里插入图片描述
  2. 所以我们需要在springmvc.xml中进行配置mvc:resources,来加载.png 或者 .js 或者 .css
    (两个*表示对images跟了多少层路径没有限制)
    在这里插入图片描述

1

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!