SERVLETJSP Unit05:转发 、 JSP开发常见问题 & Unit09: EL、JSTL

来源:互联网 发布:python ftp上传文件 编辑:程序博客网 时间:2024/06/05 08:44

一.转发和重定向

1.它们的相同点

  • 都是解决2个WEB组件之间的跳转问题
    WEB组件: Servlet/JSP

2.它们的区别(*)

这里写图片描述

3.使用建议

  • 通常查询时用转发
  • 通常增加、修改、删除后重定向到查询

二.EL和JSTL

1.它们的作用

这里写图片描述

2.演示案例

这里写图片描述

3.JSTL原理

这里写图片描述

FindStudentServlet.java

package web;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import entity.Course;import entity.Student;public class FindStudentServlet extends HttpServlet {    @Override    protected void service(        HttpServletRequest req,         HttpServletResponse res) throws ServletException, IOException {        //模拟查询一个学生        Student stu = new Student();        stu.setName("zhangsan");        stu.setAge(23);        stu.setSex("M");        stu.setInterests(            new String[]{"篮球","足球","排球"});        Course c = new Course();        c.setId(1);        c.setName("Java");        c.setDays(82);        stu.setCourse(c);        //转发        req.setAttribute("stu", stu);        req.getRequestDispatcher("student.jsp")            .forward(req, res);    }}

student.jsp

<%@page pageEncoding="utf-8"%><%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><!doctype html><html>    <head>        <meta charset="utf-8"/>        <title>查询学生</title>    </head>    <body>        <!-- 2.JSTL标签 -->        <!-- 2.1 if标签 -->        <p>            <c:if test="${stu.sex=='M' }"></c:if>            <c:if test="${stu.sex=='F' }"></c:if>        </p>        <!-- 2.2 choose标签 -->        <p>            <c:choose>                <c:when test="${stu.sex=='M' }"></c:when>                <c:otherwise></c:otherwise>            </c:choose>        </p>        <!-- 2.3 forEach标签 -->        <p>            <c:forEach items="${stu.interests }" var="i">                ${i }            </c:forEach>        </p>        <!-- 1.EL表达式 -->        <!-- 1.1访问Bean属性 -->        <!-- request.getAttribute("stu").getName() -->        <p>姓名:${stu.name }</p>        <p>年龄:${stu.age }</p>        <!-- 等价于stu.sex -->        <p>性别:${stu["sex"] }</p>        <!-- request.getAttribute("stu")                .getCourse().getId() -->        <p>课程ID:${stu.course.id }</p>        <!--             EL表达式的取值范围:            1)EL默认从4个隐含对象中依次取值              page->request->session->application            2)默认依次取值的规则,其意义在于简化EL               表达式,在取值时可以不用写对象名.            3)若希望打破默认规则,明确从某对象中取值,               则需要在表达式前面增加对象名.              requestScope.stu.name              sessionScope.stu.name         -->        <p>兴趣:${requestScope.stu.interests }</p>        <!-- 1.2访问时可以直接运算 -->        <p>年龄+5:${stu.age+5 }</p>        <p>介于20-30间:${stu.age>20 && stu.age<30 }</p>        <p>是否为空:${empty stu.interests }</p>        <!-- 1.3直接获取请求参数 -->        <p>参数:${param.user }</p>    </body></html>
原创粉丝点击