当前位置: 代码迷 >> 综合 >> SERVLETJSP Unit05:转发 、 JSP开发常见问题 Unit09: EL、JSTL
  详细解决方案

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

热度:5   发布时间:2023-12-11 15:03:24.0

一.转发和重定向

1.它们的相同点

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

2.它们的区别(*)

![这里写图片描述](https://img-blog.csdn.net/20170626095326427?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzgxMzE2Njg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

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 {
    @Overrideprotected 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->application2)默认依次取值的规则,其意义在于简化EL表达式,在取值时可以不用写对象名.3)若希望打破默认规则,明确从某对象中取值,则需要在表达式前面增加对象名.requestScope.stu.namesessionScope.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>