JSP与数据库

来源:互联网 发布:cg用什么软件 编辑:程序博客网 时间:2024/06/05 10:20

对于JSP与数据库,之前就相当于Java的图形界面和数据库连接。这样想的话,用JSP的优势就会远远的大于Java的图形界面。

让我们就先来从基础的程序例子出发认识JSP与数据库的链接。

先看我们熟悉的JDBC,在这里的定义基本和之前是一样的。

import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.HashMap;import java.util.HashSet;import java.util.Map;import java.util.Set;import com.mysql.jdbc.Driver;public class DataBaseOperator {Connection conn=null;static DataBaseOperator instance=null;DataBaseOperator(){init();}void init(){try {Class.forName("com.mysql.jdbc.Driver");String URL="jdbc:mysql://localhost:3306/servlet";String name="root";String password="y888888";conn=DriverManager.getConnection(URL, name, password);} catch (SQLException  | ClassNotFoundException e) {e.printStackTrace();}}public static DataBaseOperator getInstance() {if (instance==null)instance=new DataBaseOperator();return instance;}public void insert(Student st) {try {String id=st.getId();String name=st.getName();int age=st.getAge();String gender=st.getGender();String major=st.getMajor();int team=st.getTeam();String sql="insert into studentTeam(id,name,age,gender,major,team) values ("+id+",'"+name+"',"+age+",'"+gender+"','"+major+"',"+team+")";Statement sm=conn.createStatement();sm.executeQuery(sql);if (sm!=null)sm.close();} catch (SQLException e) {e.printStackTrace();}}public void delete(String id) {try {Statement sm=conn.createStatement();sm.executeQuery("delete from studentTeam where id+"+id+"");if (sm!=null)sm.close();} catch (SQLException e) {e.printStackTrace();}}public void update(Student st) {try {String id=st.getId();String name=st.getName();int age=st.getAge();String gender=st.getGender();String major=st.getMajor();int team=st.getTeam();String sql="update studentTeam set id="+id+",name='"+name+"',age="+age+",gender='"+gender+"',major='"+major+"',team="+team+" where id="+id+"";System.out.println(sql);Statement sm=conn.createStatement();sm.executeQuery(sql);if (sm!=null)sm.close();} catch (SQLException e) {e.printStackTrace();}}public Set<Student> search(){try{ResultSet rs=null;String sql="select * from studentTeam";Statement sm=conn.createStatement();Set<Student> sts=new HashSet<Student>();rs=sm.executeQuery(sql);while (rs.next()){Student st=new Student();st.setId(rs.getString("id"));st.setName(rs.getString("name"));st.setAge(rs.getInt("age"));st.setGender(rs.getString("gender"));st.setTeam(rs.getInt("team"));st.setMajor(rs.getString("major"));sts.add(st);}if (rs!=null){rs.close();}if (sm!=null){sm.close();}return sts;} catch (SQLException e){e.printStackTrace();}return null;}}
对象类是学生

public class Student {String id;String name;int age;String gender;String major;int team;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public String getMajor() {return major;}public void setMajor(String major) {this.major = major;}public int getTeam() {return team;}public void setTeam(int team) {this.team = team;}}
对学生信息的具体操作,以及连接数据库,都一并在operator类里面实现了。这里需要掌握的就是jdbc的连接和功能实现。


然后,下面就是JSP页面的实现了,<%%>里面是java语句,所以可以看到下面程序<%%>里都是我们熟悉的功能

<%@page import="com.sun.javafx.collections.MappingChange.Map"%><%@page import="java.util.Iterator"%><%@page import="java.util.Set"%><%@page import="JSP.DataBaseOperator"%><%@page import="JSP.Student" %><%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>    <%request.setCharacterEncoding("UTF-8"); %><jsp:useBean id="student" scope="page" class="JSP.Student"></jsp:useBean> <jsp:setProperty property="*" name="student"/>  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><%Set<Student> sts=DataBaseOperator.getInstance().search();Iterator<Student> it=sts.iterator();%><table border="border" bordercolor="black" style="width:600px;"><tr><td style="border:1px solid black;">学号</td><td style="border:1px solid black;">姓名</td><td style="border:1px solid black;">年龄</td><td style="border:1px solid black;">性别</td><td style="border:1px solid black;">班级</td><td style="border:1px solid black;">研究方向</td><td style="border:1px solid black;">操作</td></tr><%while (it.hasNext()){Student st=it.next();%><tr><td style="border:1px solid black;"><%=st.getId() %></td><td style="border:1px solid black;"><%=st.getName() %></td><td style="border:1px solid black;"><%=st.getAge() %></td><td style="border:1px solid black;"><%=st.getGender() %></td><td style="border:1px solid black;"><%=st.getTeam() %></td><td style="border:1px solid black;"><%=st.getMajor() %></td><td style="border:1px solid black;"><a href="/DataAccess.jsp?op=3&id=<%=st.getId() %>">删除</a>   <a href="/DataAccess.jsp?op=4&id=<%=st.getId() %>">修改</a></td></tr><%} %></table></body></html>
而这里,
<td style="border:1px solid black;"><%=st.getId() %></td>
我认为是很好的诠释了HTML与Java的结合之处,Java用来对数据信息操作,HTML负责显示界面,分工明确。

数据库信息和网页显示的结果如下:


这为什么表单里面显示的数据顺序不对呢?疑惑ing...

最后,今天遇到了一个很二的问题。之前我把mysql的jar包放错目录了,结果一直提示找不到Driver类!最后才知道,是要放到这里的

真的是蠢啊。

0 0