c:forEach如何才能终止,我的终止不了

纹枰老妖 2020-05-29 05:09:21
我创建了一个webproject项目,然后用浏览器打开,浏览器运行不了,错误如下图:


下面我说一下这个项目如何创建的,首先是数据库建表【ch09_user_table】,这个略过不提。直接说下面:
我用mysclipse新建一个webproject工程,命名为【ShowUser】,然后在这个工程建了一个【com.throne212.javaweb.ch09】的包,该包下面写了两个类:【User】和【QueryUserServlet】,这两个类的源代码如下
首先是user类的:
package com.throne212.javaweb.ch09;

public class User {
private String username;
private String password;
private String gender;
private int age;
private String description;

public String getUsername(){
return username;
}
public void setUsername(String username){
this.username = username;
}

public String getPassword(){
return password;
}
public void setPassword(String password){
this.password = password;
}

public String getGender(){
return gender;
}
public void setGender(String gender){
this.gender = gender;
}

public int getAge(){
return age;
}
public void setAge(int age){
this.age = age;
}

public String getDescription(){
return description;
}
public void setDescription(String description){
this.description = description;
}
}


*********分割线,下面的代码是QueryUserServlet类的内容*******
package com.throne212.javaweb.ch09;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class QueryUserServlet extends HttpServlet{
static{
try{
Class.forName("com.mysql.jdbc.Driver");
}catch(ClassNotFoundException e){
e.printStackTrace();
}
}

private static final String url = "jdbc:mysql://localhost:3306/test";
private static final String username = "root";
private static final String password="123";

public void doGet(HttpServletRequest request, HttpServletResponse response)throws IOException,ServletException{
this.doPost(request, response);
}
public void doPost(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException{
List<User> users = new ArrayList<User>();

Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;

try{
String sql = "select * from ch09_user_table"; //获取连接
conn = DriverManager.getConnection(url, username, password); //创建会话
ps = conn.prepareStatement(sql); //执行查询
rs = ps.executeQuery();
if(rs.next()){
User user = new User();
user.setUsername(rs.getString("username"));
user.setPassword(rs.getString("password"));
user.setAge(rs.getInt("age"));
user.setGender(rs.getString("gender"));
user.setDescription(rs.getString("description"));

users.add(user);
}
}catch(SQLException e){
e.printStackTrace();
}finally{
if(rs != null){
try{
rs.close();
}catch(SQLException e){
e.printStackTrace();
}
}

if(ps != null){
try{
ps.close();
}catch(SQLException e){
e.printStackTrace();
}
}

if(conn != null){
try{
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}

request.setAttribute("users", users);
request.getRequestDispatcher("list.jsp").forward(request, response);
}
}



再然后,我在该项目的【/ShowUser/WebRoot】目录下,创建了一个【list.jsp】文件,文件的详细内容如下:
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>用户列表</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>

<body>
<table border="1" align="center">

<tr>
<th>用户名:</th>
<th>密码:</th>
<th>年龄:</th>
<th>性别</th>
<th>简介</th>
</tr>

<!-- 使用<c:forEach>标签遍历所有用户 -->
<c:forEach var="user" items="${requestScope.users}">
<tr>
<td>
${user.username }
</td>

<td>
<c:if test="${!empty user.password}">***</c:if>
</td>

<td>
${user.age}
</td>

<td>
<c:if test="${user.gender == 'male'}">男</c:if>
<c:if test="${user.gender == 'female'}">女</c:if>
</td>

<td>
${user.description}
</td>
</tr>
</c:forEach>
</table>
</body>
</html>



最后,我在【web.xml】文件中修改了一下配置,修改后的【web.xml】如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>QueryUserServlet</servlet-name>
<servlet-class>com.throne212.javaweb.ch09.QueryUserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>QueryUserServlet</servlet-name>
<url-pattern>/QueryUserServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>list.jsp</welcome-file>
</welcome-file-list>
</web-app>



接下来就是部署应用,服务器选择了【Tomcat6.x】,然后启动了Tomcat,打开浏览器,地址栏输入【http://localhost:8080/ShowUser/QueryUserServlet】,但浏览器的反应却不是教科书上的,就像问题里的图片一样。所以我来这儿问下热心的朋友,这是什么原因,我应该怎么做啊?
...全文
244 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
纹枰老妖 2020-05-29
  • 打赏
  • 举报
回复
引用 2 楼 qybao 的回复:
看错误提示,应该标签没匹配
<!-- 使用<c:forEach>标签遍历所有用户 --> 这一行改成jsp的注释试试 <%-- 使用<c:forEach>标签遍历所有用户 --%> 因为里面夹着的<c:forEach>标签不知道有没有影响

不用回复了,我已经搞清楚了,是因为文件【QueryUserServlet】第42行代码的错误,应该把if换成while,吐槽两句,这本书可真是错误多多啊,不知道怎么校验通过的!
再次致谢,结贴中。。。
纹枰老妖 2020-05-29
  • 打赏
  • 举报
回复
引用 2 楼 qybao 的回复:
看错误提示,应该标签没匹配
<!-- 使用<c:forEach>标签遍历所有用户 --> 这一行改成jsp的注释试试 <%-- 使用<c:forEach>标签遍历所有用户 --%> 因为里面夹着的<c:forEach>标签不知道有没有影响

谢谢您!按照您的指点原问题已解决,不过遇到一个新的小问题,还劳烦您再看一下:
图1是我的表【ch09_user_table】的实际内容:


可为什么我用浏览器打开这个表,只得到下图的效果(只显示了一行,并不是全部的6行):
qybao 2020-05-29
  • 打赏
  • 举报
回复
看错误提示,应该标签没匹配
<!-- 使用<c:forEach>标签遍历所有用户 --> 这一行改成jsp的注释试试 <%-- 使用<c:forEach>标签遍历所有用户 --%> 因为里面夹着的<c:forEach>标签不知道有没有影响
meet_aas 2020-05-29
  • 打赏
  • 举报
回复
1.查看jstl的jar包是否导入 2.调试或者输出查看从数据库查询的数据是否正确 3.检查页面有没有细节错误,比如说有一个标签没有结束

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧