EL 和 JSTL

自己写的实例,以便以后复习。

文件结构

 

主程序 Servlet

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 {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
		// 1.获取参数
		// 2.处理业务
		Student stu = new Student();
		stu.setName("张三");
		stu.setAge(18);
		stu.setSex("M");
		stu.setInterests(new String[] {"琴", "棋", "书", "画"});
		String str="C++, Java, C, python, C语言,  C#, JavaScript, JSP, .net";
		stu.setStr(str);
		Course course = new Course();
		course.setId(1);
		course.setName("Java");
		course.setDays(90);
		stu.setCourse(course);
		// 3.转发或者重定向
		req.setAttribute("stu", stu);
		req.getRequestDispatcher("find_student.jsp").forward(req, res);  // 转发
	/*	//重定向,不会共享request
		//以下写法错误,该 "/"代表了8080端口
		res.sendRedirect("/student_list.jsp");
		res.sendRedirect(request.getContextPath() + "/student_list.jsp");
	 */
	}

}

Course.java

package entity;

import java.io.Serializable;

public class Course implements Serializable {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private Integer courseId;
	private String name;
	
	// 1.和get/set对应的属性是Bean属性
	// 2.通过get/set 反映出来的我们以为的属性
	// 2.去掉get并将首写字母小写的单词是bean属性
	// bean属性通常都和对象属性一致,也可以修改为不一致
	public Integer getId() {
		return courseId;
	}
	public void setId(Integer courseId) {
		this.courseId = courseId;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getDays() {
		return days;
	}
	public void setDays(Integer days) {
		this.days = days;
	}
	private Integer days;
}

Student.java

package entity;

import java.io.Serializable;

public class Student implements Serializable {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private String name;
	private Integer age;
	private String sex;
	private String[] interests;
	private Course course;
	private String str;
	
	public String getStr() {
		return str;
	}
	public void setStr(String str) {
		this.str = str;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public String[] getInterests() {
		return interests;
	}
	public void setInterests(String[] interests) {
		this.interests = interests;
	}
	public Course getCourse() {
		return course;
	}
	public void setCourse(Course course) {
		this.course = course;
	}
}

find_student.jsp

<%@ page language="java" contentType="text/html"
    pageEncoding="utf-8"%>
<!-- 声明标签库并使用该标签库,指定标签的前缀 -->
<!-- 使用核心标签库 -->
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>El 和 JSTL</title>
</head>
<body>
	<h1>JSTL</h1>	
	<!-- c:out 输出标签 -->
	<c:out value="c:out<hr>"></c:out><br>
	
	<!-- c:set 变量设置标签 scope 变量作用域,默认 page  target 存储目标对象 -->
	<c:set var="name" value="XR"></c:set>
	
	<!-- c:remove 变量移除标签 -->
	<c:remove var="name"></c:remove>
	
	<!-- c:catch -->
	<c:catch var="error">${name }</c:catch>
	<c:out value="${error }"></c:out>
	
	<!-- c:import 导入标签,可以导入站内或者站外资源,jsp:include 只能导入站内标签 -->
	<c:catch var="error">
		<c:import url="" charEncoding="UTF-8"></c:import>
	</c:catch>
	<c:out value="${error }"></c:out>
	
	<!-- c:redirect 重定向标签 -->
	<c:redirect url="result.jsp">
		<c:param name="user" value="xr"></c:param>
	</c:redirect>
	
	<p>${name }</p>
	<!-- 1.if -->
	<p>
		<c:if test="${stu.sex == 'M' }">男</c:if>
		<c:if test="${stu.sex != 'F' }">女</c:if>
	</p>
	<!-- 2.choose -->
	<p>
		<c:choose>
			<c:when test="${stu.sex == 'M' }">男</c:when>
			<c:otherwise>女</c:otherwise>
		</c:choose>
	</p>
	<!-- 3.foreach -->
	<!-- items:声明遍历的数据
		var:给每次循环所获得的数据命名 -->
	<p>
		<c:forEach items="${stu.interests }" var="i" begin="0" end="3" step="1">${i }</c:forEach>
	</p>
	<!-- 4.forTokens 迭代标签 -->
	<c:forTokens items="${stu.str }" var="i" begin="0" end="8" step="1" delims=",">${i }<br></c:forTokens>
	
	
	
	<h1>EL</h1>
	<!-- 1.获取Bean属性 -->
	<!-- 等价于 request.getAttribute("stu").getName() -->
	<p>姓名:${stu.name}</p>
	<!-- 等价于 request.getAttribute("stu").getAge() -->
	<p>年龄:${stu["age"] }</p>
	<!-- 等价于 request.getAttribute("stu").getCourse().getId() -->
	<p>课程:${stu.course.id }</p>
	<!-- El 的取值范围:
		1.EL 默认从以下四个对象中依次取值  page,request,session,application
		这四个隐含对象是 EL 默认的取值范围
		2.也可以指定取值范围:
		requestScope.stu.name, sessionScope.stu.name
		3.设计默认取值的目的,是为了开发者不用经常写范围,是为了简化EL表达式-->
		<p>性别:${requestScope.stu.sex }</p>
	<!-- 2.支持运算,判断 -->
	<p>年龄+5:${stu.age + 5 }</p>
	<p>20 - 30之间:${stu.age >= 20 && stu.age <= 30 }</p>
	<p>判空:${empty stu }</p>
	<!-- 获取请求参数 -->
	<p>参数:${param.user }</p>
	<p>三目运算:${stu.age>=20?"20+":"20-" }</p>
	<!-- 禁用EL,将EL原样输出 -->
	\${stu.name }:
	${stu.name }
</body>
</html>

result.java

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>
	<p>${param.user }<p>
</body>
</html>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
  <display-name>JSPDemo3-EL&amp;JSTL</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>findStudent</servlet-name>
    <servlet-class>web.FindStudentServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>findStudent</servlet-name>
    <url-pattern>/findStudent</url-pattern>
  </servlet-mapping>
</web-app>

 pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>czu.cn</groupId>
  <artifactId>JSPDemo3</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <dependencies>
  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>
</dependencies>
  
</project>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值