Servlet-复习03

查询所有用户

方式一:不通过转发(最麻烦的)

步骤如下:

1.新建servlet类UserServlet类用于查询

2.编写index.jsp文件查询表格

3.写web拦截请求

4.写Service()方法,和dao方法

5.返回html页面内容

UserDao类

代码如下

 public List<User> getAll() {
        Connection con=DBUtil.getConnection();
        List<User>list=new ArrayList<User>();
        try {
            Statement statement=con.createStatement();
            String sql="select *from t1";
            ResultSet re=statement.executeQuery(sql);
            while(re.next())
            {
                User user=new User();
                user.setId(re.getInt("id"));
                user.setUsername(re.getString("username"));
                user.setPassword(re.getString("password"));
                list.add(user);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return list;
    }

Service层

UserServlet类

public class UserServlet extends HttpServlet {
    public void service(HttpServletRequest request, HttpServletResponse response)
    {
        try {
            request.setCharacterEncoding("utf-8");
            response.setContentType("text/html;charset=utf-8");
           List<User> users=new ArrayList<User>();
           UserService service=new UserService();
           users=service.getAll();
           PrintWriter writer=response.getWriter();
           writer.println("<!DOCTYPE html>");
            writer.println("<html lang=\"en\">");
            writer.println("<head>");
            writer.println("<meta charset=\"UTF-8\">");
            writer.println("<title>Title</title>");
            writer.println("</head>");
            writer.println("<body>");
            writer.println("<table border=\"1\">");
            writer.println("<thead>");
            writer.println(" <tr>\n" +
                    "     <td>id</td>\n" +
                    "     <td>username</td>\n" +
                    "     <td>password</td>\n" +
                    "   </tr>");
            writer.println("</thead>");
            writer.println("<tbody>");

            for(User user:users)
            {
                writer.println("<tr></tr>");
                writer.println("<td>"+user.getId()+"</td>");
                writer.println("<td>"+user.getUsername()+"</td>");
                writer.println("<td>"+user.getPassword()+"</td>");
                writer.println("<tr></tr>");
            }
            writer.println("</tbody>");
            writer.println("</table>");
            writer.println("</body>");
            writer.println("</html>");
            writer.println("");

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

热部署:更改页面信息时,不用重新运行刷新即可

方式二:通过转发jsp页面

1.UserServlet类,request绑定list->获取转发器->开始转发

 

 request.setAttribute("list",users);
            RequestDispatcher re=request.getRequestDispatcher("/user.jsp");
            re.forward(request,response);

2.jsp页面通过request获取list,循环打出

<%@ page import="java.util.List" %>
<%@ page import="com.buka.edu.bean.User" %><%--
  Created by IntelliJ IDEA.
  User: 86157
  Date: 2022/2/20
  Time: 11:07
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %>
<%--编码--%>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%List <User>users=(List<User>) request.getAttribute("list");%>
<h1><%=users%></h1>
<table border="1">
    <thead>
    <th>
        <tr>
            <td>id</td>
            <td>username</td>
            <td>password</td>
        </tr>
    </th>
    </thead>
    <tbody>
    <%
    for(int i=0;i<users.size();i++)
    {%>
      <tr>
          <td><%=users.get(i).getId()%></td>
          <td><%=users.get(i).getUsername()%></td>
          <td><%=users.get(i).getPassword()%></td>
      </tr>

    <%}%>
    </tbody>
</table>


</body>
</html>

运行结果:

 

缺陷:容易出现空指针异常

方式三:通过el表达式和jstl标签

<%--
  Created by IntelliJ IDEA.
  User: 86157
  Date: 2022/2/20
  Time: 11:23
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c"  uri="http://java.sun.com/jsp/jstl/core"%>//jstl标签(api提供迭代方法)
<html>
<head>
    <title>El表达式</title>
</head>
<body>
 ${list}//el表达式自动找到与request绑定的key
 <table border="1">
     <thead>
     <tr>
         <td>id</td>
         <td>username</td>
         <td>password</td>
     </tr>
     </thead>
     <tbody>
     <c:forEach items="${list}" var="user">
         <tr>
             直接点属性,相当于get方法
             <td>${user.id}</td>
             <td>${user.username}</td>
             <td>${user.password}</td>
         </tr>
     </c:forEach>
     </tbody>
 </table>


</body>
</html>

好处:避免了空指针,页面报错误信息

运行结果:

 

隐藏访问

把jsp页面放在web-inf 下面,不通过转发就不能直接访问了

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值