java web基础 --- forEach标签

testtag.jsp

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>




JSP标签


	

JSP标签测试

姓名 职业 年龄



SimpleFormServlet.java

package com.web1.hello;


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

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.web1.datamodel.Pserson;

/**
 * Servlet implementation class SimpleFormServlet
 */
@WebServlet("/SimpleFormServlet")
public class SimpleFormServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public SimpleFormServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		request.setAttribute("jspcontent", "I am JSP");
		String formPage = "/pages/result.jsp";
		
		request.setAttribute("name_str", request.getParameter("name_str"));
		request.setAttribute("occyp_str", request.getParameter("occyp_str"));
		request.setAttribute("age_num", request.getParameter("age_num"));
		
		RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(formPage);
		dispatcher.forward(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		String formPage = "/pages/testtag.jsp";
		
		Pserson person1 = new Pserson();
		person1.setName("张三");
		person1.setOccupy("工程师");
		person1.setAge(22);
		Pserson person2 = new Pserson();
		person2.setName("李四");
		person2.setOccupy("教师");
		person2.setAge(24);
		Pserson person3 = new Pserson();
		person3.setName("王五");
		person3.setOccupy("程序猿");
		person3.setAge(27);
		
		List pList = new ArrayList();
		pList.add(person1);
		pList.add(person2);
		pList.add(person3);
		
		request.setAttribute("pList", pList);
		RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(formPage);
		dispatcher.forward(request, response);
	}

}


java web基础 --- forEach标签_第1张图片


正确配置Jstl的Maven依赖

原文:http://www.javacoder.cn/?p=195


在jsp 中使用el表达式都好几年了,原来都是将需要的jar直接放在WEB-INF/lib目录下,最近转向maven构建。一下子各种问题。
detail.jsp 的内容如下:
<%@ page language=”java”  pageEncoding=”UTF-8″%>
<%@ page isELIgnored =”false” %>
<%@ taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c” %>


运行时提示:
ClassNotFoundException: javax.servlet.jsp.jstl.core.Config
网上搜索一番,
说是jstl 需要手动引入,于是在pom.xml中添加依赖如下:

再次运行:错误如下:
java.lang.NoClassDefFoundError: org/apache/taglibs/standard/tag/rt/core/Out
刚才我们只是导入了jstl-api,而没有导入jstl的实现,所以再导入jstl 的实现。去mvnrepository上找jstl 的实现,基本上有两个版本,一个是glassfish 的jstl-impl, 另一个是apache的taglibs-standard-impl,一直犹豫不决该用谁,最后在stackoverflow.com/a/25374024/1443527上发现网友分享了他实现的经验,他用的是glassfish版本,所以我们也引人这个。由于tomcat7是兼容j2ee 3.0规范的,所以我们将jstl 依赖的东西给去除掉,防止和tomcat自身的servlet jar包冲突,改正后的依赖为

哈哈,运行正确。

顺便说一下jstl-impl-1.2.jar 和taglibs-standard-impl-1.2.1.jar 的区别,这两个包的内容很相似,后者应该是前者的一个再打包,因为Apache的taglibs工程从2009年以后一直处于停止状态。

如果你要引人后者,那么依赖应该为:

顺便提一下:你知道web.xml配置中的url-pattern的‘/’‘/*’的区别吗?
哎,基本功不扎实,这个问题折腾了好久。‘/’表示该项目的所有请求路径;‘/*’表示只能有一级子路径,它匹配’/a.jsp’但是不匹配‘/jsp/a.jsp’



你可能感兴趣的:(JavaWeb)