Jstl(javaweb相关)

使用了EL表达式可以简化JSP页面代码,但是如果需要进行逻辑判断怎么办?

虽然EL表达式可以访问JavaBean的属性,但是并不能实现在JSP中进行逻辑判断,因而要使用JSTL标签。

JSTL(JavaServerPages Standard Tag Library)JSP标准标签库

1.使用JSTL实现JSP页面中逻辑处理
2.JSTL通常会与EL表达式合作实现JSP页面的编码

使用JSTL的步骤
1.创建Web工程,添加jar包

下载地址:http://mvnrepository.com/artifact/javax.servlet/jstl/1.2

下载完直接复制到web项目WEB-INF的LIB目录下就可以了。

2.在JSP页面添加taglib指令

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

3.使用JSTL标签

1.创建一个jstl.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Jstl</title>
</head>
<body>
	<fieldset>
		<legend>
			简单字符串
		</legend>
		${str} 
	</fieldset>
	<fieldset>
		<legend>
			简单字符串
		</legend>		
		<c:out value="${str}"></c:out><br/>
	</fieldset>
	
	<fieldset>
		<legend>
			简单字符串,不存在提示
		</legend>		
		<c:out value="${strq }" default="没有取到值"></c:out>
	</fieldset>
	
	<fieldset>
		<legend>
			特殊字符串,你好
		</legend>		
		<c:out value="${welcome }" default="没有取到值" escapeXml="false"></c:out>
	</fieldset>
	
	<fieldset>
		<legend>
			特殊字符串,你好(消除隐患escapeXml="true",不写默认也是true)
		</legend>		
		<c:out value="${welcome }" default="没有取到值" escapeXml="true"></c:out>
	</fieldset>
	
	<fieldset>
		<legend>
			特殊字符串,弹窗(消除js评论隐患escapeXml="true",不写默认也是true)
		</legend>		
		<c:out value="${welcome1 }" default="没有取到值" escapeXml="true"></c:out>
	</fieldset>
	
	<fieldset>
		<legend>
			if判断
		</legend>		
		<c:if test="${v>1 }">
			v的值大于1
		</c:if>
	</fieldset>
	
	<fieldset>
		<legend>
			choose when otherwise
		</legend>		
		<c:choose >
			<c:when test="${v>1 }">
				v的值大于1
			</c:when>
			<c:otherwise >
				v的值不大于1
			</c:otherwise>
		</c:choose>
	</fieldset>
	
	<fieldset>
		<legend>
			choose when otherwise if...else
		</legend>		
		<c:choose >
			<c:when test="${score<60 }">
				不及格
			</c:when>
			<c:when test="${score<70 }">
				及格
			</c:when>
			<c:when test="${score<80 }">
				良好
			</c:when>
			<c:when test="${score<90 }">
				优秀
			</c:when>
			<c:otherwise >
				天才
			</c:otherwise>
		</c:choose>
	</fieldset>
	
	
	<fieldset>
		<legend>
			自定义对象
		</legend>
		${news2.id},${news2.tid},${news2.title},${news2.ncontent}<br/>
	</fieldset>
	
	<fieldset>
		<legend>forEach ${ vs.index}  ${vs.count} ${vs.first} ${vs.last}</legend>		
		<c:forEach items="${newslisttest }" var="u" varStatus="vs">
		<c:choose>
			<c:when test="${vs.count % 2 !=0 }">
				<font color="blue">${u.id },${u.title },${u.author},${u.createtime}<br></font>
			</c:when>
			<c:otherwise>
				${u.id },${u.title },${u.author},${u.createtime}<br>
			</c:otherwise>
		</c:choose>
		</c:forEach>	
	</fieldset>
	
	
</body>
</html>

2.创建JstlServlet(实体类和业务层不再赘述)

package com.xintouyun.jweb.servlet;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.xintouyun.jweb.entity.News;
import com.xintouyun.jweb.entity.User;
import com.xintouyun.jweb.service.NewsService;
import com.xintouyun.jweb.service.UserService;
import com.xintouyun.jweb.service.impl.NewsServiceImpl;
import com.xintouyun.jweb.service.impl.UserServiceImpl;

public class JstlServlet extends HttpServlet{
	public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException{
		//创建session
		HttpSession session =request.getSession();
		//创建application
		ServletContext application=request.getServletContext();
		request.setAttribute("str", "hello world");
		request.setAttribute("welcome", "<font color='red'>你好</font>");
		request.setAttribute("welcome1","<script> alert(111111) </script>");
		session.setAttribute("welcome2", "nihao");
		application.setAttribute("welcome3", "nihaoa");
		NewsService newsservice=new NewsServiceImpl();
		News news2=newsservice.getNews(15);
		request.setAttribute("news2", news2);
		
		UserService userservice=new UserServiceImpl();
		User user2=userservice.getUser("admin");
		request.setAttribute("user2", user2);
		
		List<News> news3=newsservice.listNews();
		request.setAttribute("newslisttest", news3);
		
		request.setAttribute("v", "10");
		
		request.setAttribute("score", "86");
		request.setAttribute("v1", null);
		request.setAttribute("v2", "");
		request.setAttribute("v3", new ArrayList<>());
		request.setAttribute("v3", "value4");
		
		request.getRequestDispatcher("Jstl.jsp").forward(request, response);
		
		
	}
}

3.配置xml文件

<servlet>
		<servlet-name>JstlServlet</servlet-name>
		<servlet-class>com.xintouyun.jweb.servlet.JstlServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>JstlServlet</servlet-name>
		<!--访问servlet的路径:必须以/开头,这个/代表应用的根 -->
		<url-pattern>/JstlServlet</url-pattern>
	</servlet-mapping>

重启tomcat服务器,然后浏览器访问http://localhost:8080/myweb/JstlServlet(我的项目是myweb)

猜你喜欢

转载自blog.csdn.net/qq_40180411/article/details/82585481