这里的数据展示利用jsp的EL表达式,后台放入session,前台EL获取

数据库设计是这样的,一个老师对应有多个学生,在学生表student中建立外键tid与老师表teacher的tid对应,现在老师登录成功以后,实现对老师下面的学生信息进行展示

从后往前写;

1建立与数据库对应的表的实体类student.java

public class Student {
private int sid;
private String sname;
private String sage;
public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getSage() {
return sage;
}
public void setSage(String sage) {
this.sage = sage;
}
public Student() {
super();
}
public Student(int sid, String sname, String sage) {
super();
this.sid = sid;
this.sname = sname;
this.sage = sage;
} }

2 StudentDao.java

public interface StudentDao {

    /**
*
* @param tid
* @return 学生对象
* 根据老师id返回学生对象
*/
public List<Student> getStudentBytid(int tid);
}

3 StudentDaoImpl.java

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import JDBCUtil.JDBCUtil;
import com.zr.dao.StudentDao;
import com.zr.model.Student;
public class StudentDaoImpl implements StudentDao{
/**
* 根据传入的老师id获取学生
*/
public List<Student> getStudentBytid(int tid) {
//定义学生对象集合students接收数据库返回
List<Student> students = new ArrayList<Student>();
//获取数据库连接
Connection con=JDBCUtil.getConnection();
//编写SQL语句
StringBuffer sql=new StringBuffer("select * from student where tid=?");
try {
PreparedStatement pst=con.prepareStatement(sql.toString());
pst.setInt(1, tid);
//返回一个结果集
ResultSet rs=pst.executeQuery();
while (rs.next()) {
//学生对象接收结果集的结果
Student s=new Student();
s.setSid(rs.getInt("sid"));
s.setSname(rs.getString("sname"));
s.setSage(rs.getString("sage"));
students.add(s);
}
} catch (SQLException e) {
e.printStackTrace();
}
return students;
}

4 searchService.java

import java.util.List;
import com.zr.model.Student;
public interface searchService {
/**
* 查询服务
* @param tid 通过老师ID
* @return 学生对象所有信息
*/
public List<Student> getStudents(int tid);
}

5 searchServiceImpl.java

import java.util.ArrayList;
import java.util.List;
import com.zr.dao.StudentDao;
import com.zr.daoIm.StudentDaoImpl;
import com.zr.model.Student;
import com.zr.service.searchService;
public class searchServiceImpl implements searchService{ public List<Student> getStudents(int tid) { List<Student> students=new ArrayList<Student>();
StudentDao studentDaoImpl =new StudentDaoImpl();
students= studentDaoImpl.getStudentBytid(tid);
return students;
}

6 SearchController.java

import java.io.IOException;
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;
import javax.servlet.http.HttpSession;
import com.zr.model.Student;
import com.zr.model.Teacher;
import com.zr.service.searchService;
import com.zr.serviceIm.searchServiceImpl;
public class SearchController extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException { List<Student> students=new ArrayList<Student>();
searchService sc=new searchServiceImpl();
//获取存放在session中的teacher对象
Teacher teacher=(Teacher) req.getSession().getAttribute("teacher");
//获取老师ID
int td= teacher.getTid();
//根据老师id获取学生对象
students= sc.getStudents(td); //将students对象放入session中,前台用EL表达式获取值
HttpSession session= req.getSession();
session.setAttribute("students", students);
req.getRequestDispatcher("main.jsp").forward(req, resp);
}
}

7 配置web.xml文件

注意:name要在前

<!-- 查询当前下面的学生信息 -->
<servlet>
<servlet-name>selectStus</servlet-name>
<servlet-class>com.zr.controller.SearchController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>selectStus</servlet-name>
<url-pattern>/selectStus</url-pattern>
</servlet-mapping>

8 mian.jsp前台页面

<body>
<form action="selectStus">
<input type="submit" value="查询">
</form>
<!-- 展示学生对象信息 -->
<table class="table table-bordered" style="margin-top: 50px">
<tr>
<td>学生编号</td>
<td>学生名</td>
<td>学生年龄</td>
</tr>
<!-- 利用EL表达式 -->
<c:forEach items="${students}" var="student" varStatus="studentIndex">
<tr>
<td>${student.sid}</td>
<td>${student.sname}</td>
<td>${student.sage}</td>
</tr>
</c:forEach>
</table>
</body>

MVC实现登录,增删改查之数据展示:JSP的EL表达式(二)的更多相关文章

  1. 12 Servlet_04 Servlet增删改查 静态页面与动态页面 EL表达式 table表格的一些样式

    今天学习了servlet的增删改查: 存储数据 setAttribute(String name,Object obj );获取数据 getAttribute(String name);删除数据 re ...

  2. Zookeeper 客户端API调用示例(基本使用,增删改查znode数据,监听znode,其它案例,其它网络参考资料)

    9.1 基本使用 org.apache.zookeeper.Zookeeper是客户端入口主类,负责建立与server的会话 它提供以下几类主要方法  : 功能 描述 create 在本地目录树中创建 ...

  3. SpringMVC框架下数据的增删改查,数据类型转换,数据格式化,数据校验,错误输入的消息回显

    在eclipse中javaEE环境下: 这儿并没有连接数据库,而是将数据存放在map集合中: 将各种架包导入lib下... web.xml文件配置为 <?xml version="1. ...

  4. EasyUI + Spring MVC + hibernate实现增删改查导入导出

    (这是一个故事--) 前言 作为一个JAVA开发工程师,我觉得最基本是需要懂前端.后台以及数据库. 练习的内容很基础,包括:基本增删改查.模糊查询.分页查询.树菜单.上传下载.tab页 主管发我一个已 ...

  5. 【ASP.NET MVC】jqGrid 增删改查详解

    1   概述 本篇文章主要是关于JqGrid的,主要功能包括使用JqGrid增删查改,导入导出,废话不多说,直接进入正题. 2   Demo相关 2.1   Demo展示 第一部分 第二部分 2.2 ...

  6. EasyUI +MVC +EF实现增删改查

    OA项目的框架已经搭建好了,接下来就是在这个框架下完成相应的业务的编码,接下来实现UserInfo页面的增删改查. 1.首先先谈一下遇到的一个框架上的问题:提示EF版本不一致之类的问题,主要是解决方案 ...

  7. 使用jdbc实现简单的mvc模式的增删改查

    Mvc模式设计: 视图:添加界面(addUser.jsp),修改界面(updateUser.jsp),显示页面(allUser.jsp) 控制器:添加信息控制器(AddUserServlet),修改信 ...

  8. Mysql数据库和表的增删改查以及数据备份&恢复

    数据库 查看所有数据库 show databases; 使用数据库 use 数据库名; 查看当前使用的数据库 select database(); 创建数据库 create database 数据库名 ...

  9. SSI的实例(登录增删改查)

    源码下载:http://download.csdn.net/detail/u011518709/8195143 主要jar包: 配置文件:web.xml <?xml version=" ...

随机推荐

  1. Bootstrap_Javascript_提示框

    一. 结构分析 在Bootstrap框架中的提示框,结构非常简单,常常使用的是按钮<button>标签或者链接<a>标签来制作.不管是使用按钮还是链接来制作提示框,他们都有一个 ...

  2. MySql数据库3【优化2】sql语句的优化

    1.SELECT语句优化 1).利用LIMIT 1取得唯一行[控制结果集的行数] 有时,当你要查询一张表是,你知道自己只需要看一行.你可能会去的一条十分独特的记录,或者只是刚好检查了任何存在的记录数, ...

  3. Android Framework------之Keyguard 简单分析

    前面对于MediaPlayer的系统研究,刚刚开始,由于其他原因现在要先暂停一下.这次要看的模块是android 4.2 系统中的Keyguard模块.在接触之后才发现,android4.2的keyg ...

  4. Python Tutorial 学习(九)--Classes

    ## 9. Classes 类 Compared with other programming languages, Python's class mechanism adds classes wit ...

  5. Python 更改cmd中的字色

    没有gui的python程序是在cmd窗口中运行的,黑色背景,灰色的字,确实很复古,不符合现代人的使用习惯-同事在用我写的小工具时,清一色的字色,看起来会没有重点性,因此我就想通过更改cmd中的字色来 ...

  6. unity NGUI点击消息不传入到场景中去

    unity NGUI点击消息不传入到场景中去 1.今天遇到的问题是点击NGUI的按钮,场景中也相应了这个消息 解决的办法是在场景中需要互动的时候,也就是在update中进行判断 是否是点击了NGUI按 ...

  7. [原创]leet code - path sum

    ;            ;                ;                            }        }        ;            }};

  8. Qt如何去掉按钮等控件的虚线框(焦点框)(三种办法)

    方法1:可以通过代码ui->pushButton->setFocusPolicy(Qt::NoFocus)或在Qt Creator的属性列表中设置. 方法2:如果在嵌入式设备中需要通过按键 ...

  9. 为什么PCI-e比SATA快这么多?

    PCIe协议和SATA协议都是分层协议,分为物理层,数据链路层,传输层,命令层和应用层. 硬件工程师主要关注物理层.数据链路层和传输层.所有CMD/data由应用层和命令层打下来,每向下走一层,多一层 ...

  10. hiho #1079 : 离散化

    描述 小Hi和小Ho在回国之后,重新过起了朝7晚5的学生生活,当然了,他们还是在一直学习着各种算法~ 这天小Hi和小Ho所在的学校举办社团文化节,各大社团都在宣传栏上贴起了海报,但是贴来贴去,有些海报 ...