javaweb tomcat

登录功能获取的是数据库里面的uesrname和password,请问如何实现登录跳转的slist界面显示的是登录账号的数据库信息,目前显示的是数据库所有信息

dao层:public List<Only> findAll();
daoimpl层: public List<Only> findAll() {
        //使用JDBC操作数据库...
        //1.定义sql
        String sql = "select * from only";
        List<Only> students = template.query(sql, new BeanPropertyRowMapper<Only>(Only.class));
 
        return students;
    }
service层: public List<Only> findAll();
serviceimpl层:public List<Only> findAll() {
        //调用Dao完成查询
        return dao.findAll();
servlet层:/获取条件查询参数
        Map condition = request.getParameterMap();
        //2.调用service查询
        OnlyService service = new OnlyServiceImpl();
        PageBean<Only> pb = service.findUserByPage(currentPage,rows,condition);
        System.out.println(pb);
        //3.将PageBean存入request
        request.setAttribute("pb",pb);
        request.setAttribute("condition",condition);//将查询条件存入request
        //4.转发到slist.jsp
        request.getRequestDispatcher("/slist.jsp").forward(request,response);
    }
 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
jsp页面:
        <table border="1" class="table table-bordered table-hover">
        <tr class="success">
            
            <th class="yc">序号th>
            <th>姓名th>
            <th>事务th>
            <th>操作th>
        tr>
         <c:forEach items="${pb.list}" var="only" varStatus="s">
            <tr>
                
            
                <td class="yc">${only.uid}td>
                <td>${only.username}td>
                <td>${only.event}td>
                <td><a class="btn btn-default btn-sm" href="${pageContext.request.contextPath}/findStudentServlet?uid=${only.uid}">修改a> 
                   
            tr>

        c:forEach>


参考GPT和自己的思路:

要实现登录跳转的slist界面显示的是登录账号的数据库信息,而不是所有信息,需要在查询数据的时候加上条件语句进行筛选。方法如下:

1.在Dao层的查询语句中加上条件语句,筛选出对应用户名和密码的记录。

如下所示:

public Only findByUsernameAndPassword(String username, String password) {
    String sql = "select * from only where username = ? and password = ?";
    try {
        return template.queryForObject(sql, new BeanPropertyRowMapper<Only>(Only.class), username, password);
    } catch (EmptyResultDataAccessException e) {
        e.printStackTrace();
        return null;
    }
}

2.在Service层和Servlet层中调用这个方法,返回符合条件的记录。

如下所示:

Service层:

public Only findByUsernameAndPassword(String username, String password) {
    return dao.findByUsernameAndPassword(username, password);
}

Servlet层:

OnlyService service = new OnlyServiceImpl();
Only only = service.findByUsernameAndPassword(username, password);

3.在jsp页面中只显示该记录的信息。

如下所示:

```

${only.uid} ${only.username} ${only.event} 修改 ``

参考GPT和自己的思路:

根据你的描述,你想要实现的是登录成功后,跳转到slist.jsp页面,并且仅仅显示登录账号的数据库信息,而不是数据库所有信息。

那么实现方法如下:

  1. 在登录成功后,先将登录账号存储到session中,方便其他页面使用。

  2. 在slist.jsp页面中,使用EL表达式获取session中存储的登录账号。

  3. 修改servlet层的代码,将查询条件修改为只查询当前登录账号对应的信息。

  4. 如果需要对用户进行分页显示,则在service层和dao层中增加一个根据登录账号查询记录数以及查询符合条件的记录的方法。

现在来详细看一下如何实现:

  1. 将登录账号存储到session中

在登录成功后,将登录账号存储到session中,代码如下:

String username = request.getParameter("username");
session.setAttribute("username", username);
  1. 在slist.jsp页面中,使用EL表达式获取session中存储的登录账号

在slist.jsp页面中,使用EL表达式获取session中存储的登录账号,代码如下:

${sessionScope.username}
  1. 修改servlet层的代码,只查询当前登录账号对应的信息

修改servlet层的代码,增加一个查询条件,只查询当前登录账号对应的信息,代码如下:

String username = (String) session.getAttribute("username");
Map<String, String[]> condition = request.getParameterMap();
condition.put("username", new String[]{username});
OnlyService service = new OnlyServiceImpl();
List<Only> list = service.findAll(condition);
  1. 增加根据登录账号查询记录数以及查询符合条件的记录的方法

在service层和dao层中增加一个根据登录账号查询记录数以及查询符合条件的记录的方法,代码如下:

//在service层中增加
public int getCountByUser(String username);

public List<Only> findByUserAndPage(int start, int rows, String username);

//在dao层中增加
public int getCountByUser(String username);

public List<Only> findByUserAndPage(int start, int rows, String username);

最后,在调用service层的查询方法时,修改为调用增加的findByUserAndPage方法,代码如下:

int start = (currentPage - 1) * rows;
List<Only> list = service.findByUserAndPage(start, rows, username);
int totalCount = service.getCountByUser(username);
PageBean<Only> pb = new PageBean<>();
pb.setCurrentPage(currentPage);
pb.setRows(rows);
pb.setList(list);
pb.setTotalCount(totalCount);

以上就是实现只显示当前登录账号对应信息的方法。希望能够帮到你。

该回答引用GPTᴼᴾᴱᴺᴬᴵ
计算叶面积指数(Leaf Area Index,LAI)需要使用鱼眼镜头拍摄的照片进行分析。在使用CAN-EYE软件进行分析时,需要调节一些参数以获得正确的结果。
·
首先,需要确保拍摄照片的相机参数已经正确设置。这包括焦距、光圈、快门速度等参数。如果这些参数设置不正确,可能会影响到计算结果的准确性。
·
其次,需要设置CAN-EYE软件中的相关参数。在“工具”菜单下选择“参数设置”可以打开参数设置窗口。在这个窗口中,有一些与叶面积指数计算相关的参数需要设置,包括图像校正、白平衡、对比度、亮度等参数。这些参数的设置需要根据具体情况进行调整。
·
最后,在进行叶面积指数计算时,需要根据所选取的区域大小和位置来设置相关参数。在“工具”菜单下选择“叶面积指数”可以打开叶面积指数窗口。在这个窗口中,需要选择感兴趣区域,并根据实际情况设置相关参数,包括阈值、叶子形态参数等。
·
需要注意的是,叶面积指数的计算结果不仅受到相机和软件参数的影响,还受到植被本身的影响,比如叶子颜色、密度、形态等。因此,在进行叶面积指数计算时,需要综合考虑多种因素,并进行合理的调整。