Web开发基础_Servlet学习_0015_Jsp相关概念及与其他技术组合

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Coder_Boy_/article/details/82503775

 相关概念辨析

EL和JSTL

EL案例 

 

补充:EL表达式取的是Bean属性

class Student {

    //对象属性
    private String name;

    //Bean属性:studentName
    public String getStudentName() {
        return this.name;
    }

    public void setStudentName(String name) {
        this.name = name;
    }

}

案例演示:

工程案例目录结构

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>com.study</groupId>
  <artifactId>Jsp03</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <dependencies>
  	<dependency>
  		<groupId>javaee</groupId>
  		<artifactId>javaee-api</artifactId>
  		<version>5</version>
  	</dependency>
  	<dependency>
  		<groupId>jstl</groupId>
  		<artifactId>jstl</artifactId>
  		<version>1.2</version>
  	</dependency>
  </dependencies>
</project>

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>Jsp03</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>demo</servlet-name>
  	<servlet-class>web.DemoServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>demo</servlet-name>
  	<url-pattern>/demo</url-pattern>
  </servlet-mapping>
</web-app>

DemoServlet.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 DemoServlet extends HttpServlet{

	@Override
	protected void service(HttpServletRequest req,
			HttpServletResponse res) throws ServletException, IOException {
			//模拟一份数据
		Student s= new Student();
		s.setName("CANG");
		s.setAge(40);
		s.setSex("M");
		s.setInterests(new String[]{"篮球","足球","排球"});
		Course c = new Course();
		c.setId(1);
		c.setName("Java");
		c.setDays(80);
		s.setCourse(c);
		//转发到JSP
		req.setAttribute("stu", s);
		//当前:/Jsp03/demo
		//目标:/Jsp03/demo.jsp
		req.getRequestDispatcher("demo.jsp").forward(req,res);
	}

	
}

Student.java

package entity;

import java.io.Serializable;

public class Student implements Serializable {

	private String name;
	private Integer age;
	private String sex;
	private String[] interests;
	private Course course;
	
	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;
	}
	

}

Course.java

package entity;

import java.io.Serializable;

public class Course implements Serializable {

	//对象属性courseId
	private Integer courseId;
	private String name;
	private Integer days;
	
	//Bean属性id
	//EL访问的是Bean属性(get方法)
	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;
	}
	
	
}

demo.jsp

<%@page pageEncoding="utf-8"%>
<!-- 引入标签库 -->
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="/cheri-tag" prefix="s" %>
<!doctype html>
<html>
	<head>
		<title>EL和JSTL</title>
		<meta charset="utf-8">
	</head>
	<body>
		
		
		<h1>JSTL</h1>
		<!-- if -->
		<p>
			<c:if test="${stu.sex=='M' }">男</c:if>
			<c:if test="${stu.sex=='F' }">女</c:if>
		</p>
		<!-- choose -->
		<p>
			<c:choose>
				<c:when test="${stu.sex=='F' }">男</c:when>
				<c:otherwise>女</c:otherwise>
			</c:choose>
		</p>
		<!-- 
			forEach
			varStatus用来声明循环状态,forEach在做
			循环时,会自动创建一个状态对象,来记录
			循环相关的状态数据,如循环次数。varStatus
			就是用来给这个对象命名,以便引用它。
		 -->
		 <p>
		 	<c:forEach items="${stu.interests }" 
		 	   var="i" varStatus="s">
		 		${i } ${s.index } ${s.count }
		 		
		 	</c:forEach>
		 
		 </p>
	
	
		<hr>
		<h1>EL</h1>
		<!-- 
			1.访问Bean属性:
			语法:stu.name/stu["age"]
			等价:request.getAttribute("stu").getName()
		 -->
		 <p>姓名:${stu.name }</p>
		 <p>年龄:${stu["age"] }</p>
		 <p>兴趣: ${stu.interests[0] }</p>
		 <!-- 
		 	request.getAttribute("stu").getCourse().getId()
		  -->
		 <p>课程:${stu.course.id }</p>
		
		<!-- 
			EL的取值范围:
			默认情况下,EL依次从4个对象中取值,
			page/request(*)/session(*)/application,
			这4个对象称之为EL的取值范围。
			举例: stu.name
			1. page.getAttribute("stu").getName()
			2. request.getAttribute("stu").getName()
			3. session.getAttribute("stu").getName()
		    4. application.getAttribute("stu").getName()
		    可以明确指定取值范围:
		    sessionScope.stu.name
		    applicationScope.stu.name
		 -->
		 <p>范围:${requestScope.stu.name }</p>
		
		<!-- 
			2.EL在取值时可以进行运算:
			  算术运算/逻辑运算/关系运算/判空运算
		
		 -->
		<p>年龄-5:${stu.age-5 }</p>
		<p>大于20吗:${stu.age >20 }</p>
		<p>20-30间:${stu.age >=20 && stu.age <=30 }</p>
		<p>判空:${empty stu }</p>
		<p>判空:${stu==null }</p>
		
		<!-- 
		 3. EL可以获取请求参数
		    param.user -> request.getParameter("user")
		    
		    paramValues.city -> request.getParamValues("city")
		
		 -->
		 <p>参数:${param.user }</p><!-- ?数组如何获取指定的一个 -->
		
	</body>
</html>

Jsp03工程部署到Tomcat上,运行Tomcat启动案例工程,

浏览器录入http://localhost:8080/Jsp03//demo 即可:如果没有错误,最终页面显示效果应如下图:

浏览器录入http://localhost:8080/Jsp03//demo?user=jack 后页面显示如下

猜你喜欢

转载自blog.csdn.net/Coder_Boy_/article/details/82503775
今日推荐