SpringMVC(三)之数据回显、url模板映射、转发和重定向

项目搭建请查看上一篇《SpringMVC(二)之注解以及参数封装》,这里不再介绍

数据回显

jstl-1.2.jar

UserController.java

@Controller
@RequestMapping("/user")
public class UserController {
    // 用户列表
    @RequestMapping("list")
    public String list(Model model) {

        List<User> list = new ArrayList<User>();
        // 这里因为没有连接数据库,为了方便,这里造些数据
        User user1 = new User();
        user1.setId(1);
        user1.setUsername("张三");
        user1.setBirthday(new Date(System.currentTimeMillis()));
        user1.setSex("男");
        user1.setAddress("东莞");
        User user2 = new User();
        user2.setId(2);
        user2.setUsername("李四");
        user2.setBirthday(new Date(System.currentTimeMillis()));
        user2.setSex("女");
        user2.setAddress("东莞");
        User user3 = new User();
        user3.setId(3);
        user3.setUsername("王五");
        user3.setBirthday(new Date(System.currentTimeMillis()));
        user3.setSex("男");
        user3.setAddress("东莞");

        list.add(user1);
        list.add(user2);
        list.add(user3);

        model.addAttribute("userList", list);
        return "list";
    }

    // 更新,注意与后面修改为restfull风格后的代码做对比
    @RequestMapping("update")
    public String update(Integer id) {
        System.out.println(id);
        return "success";
    }
}

list.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!-- 这里引入jstl标签 -->
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <table border="1" >
        <tr>
            <td>姓名</td>
            <td>生日</td>
            <td>性别</td>
            <td>地址</td>
            <td>操作</td>
        </tr>

        <c:forEach items="${userList }" var="user">
            <tr>
                <td>${user.username }</td>
                <td>${user.birthday }</td>
                <td>${user.sex }</td>
                <td>${user.address }</td>
                <td><a href="${pageContext.request.contextPath }/user/update.do?id=${user.id}">操作</a></td>
            </tr>
        </c:forEach>
    </table>
</body>
</html>

页面

这里写图片描述


url模板映射

我们会发现上面的a标签会带有参数以及后缀在地址栏上显示,这样并不美观,所以这里可以使用restful风格设计

<a href="${pageContext.request.contextPath }/user/update.do?id=${user.id}">操作</a>

主要是为请求restfull设计模式

Restfull软件架构设计模式:请求更间接,更安全,方便于搜索引擎收录

第一步:在web.xml添加以下内容

<servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

第二步:修改Controller中的方法

// 更新,与上面为修改前的update方法做对比
@RequestMapping("update/{id}")
public String update(@PathVariable Integer id) {
    System.out.println(id);
    return "success";
}

第三部:修改jsp中的请求地址

<a href="${pageContext.request.contextPath }/rest/user/update/${user.id }">操作</a>

修改前与修改后对比

这里写图片描述
这里写图片描述

原理

这里写图片描述


转发

关键字:forward

1.本类进行转发:
本类方法与方法之间进行forward

方式一:return "forward:list.do";
方式二:return "forward:/user/list.do";

注意:user根路径前面必须有/.

2.跨类进行转发:

方式:return "forward:/items/list.do";

重定向

关键字:redirect
1.本类进行重定向:
本类方法与方法之间进行redirect

方式一:return "redirect:list.do";
方式二:return "redirect:/user/list.do";

2.跨类进行重定向:

方式:return "redirect:/items/list.do";

mvc:annotation-driven标签

<!-- 此配置等价于配置了RequestMappingHandlerMapping、RequestMappingHandlerAdapter
     以及提供json数据格式的支持  -->
<mvc:annotation-driven />

<!-- 配置注解处理器映射器 
    负责寻找Controller
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>
    配置注解处理器处理器 
    负责执行Controller
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>
-->

上一篇:《SpringMVC(二)之注解以及参数封装》
下一篇:《SpringMVC(四)之requestParam、requestBody、responseBody》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值