在jsp页面中对数据库进行操作的步骤
- 格式:doc
- 大小:23.50 KB
- 文档页数:3
jsp+servlet+jdbc实现对数据库的增删改查⼀、JSP和Servlet的简单介绍1、Servlet和JSP简介:Java开发Web应⽤程序时⽤到的技术主要有两种,即Servlet和JSP,Servlet是在服务器端执⾏的Java程序,⼀个被称为Servlet容器的程序(其实就是服务器)负责执⾏Java程序,⽽JSP(Java Server Page)则是⼀个页⾯,由JSP容器负责执⾏.2、Servlet和JSP的区别:Servlet以Java程序为主,输出HTML代码时需要使⽤out.println函数,也就是说Java中内嵌HTML;⽽JSP则以HTML页⾯为主,需要写Java代码时则在页⾯中直接插⼊Java代码,即HTML中内嵌Java.3、MVC模型MVC模型就是将数据、逻辑处理、⽤户界⾯分离的⼀种⽅法1)、M(Model, 模型):⽤于数据处理、逻辑处理2)、V(View,视图):⽤于显⽰⽤户界⾯3)、C(Controller,控制器):根据客户端的请求控制逻辑⾛向和画⾯⽽在Java中,MVC这三个部分则分别对应于 JavaBeans、JSP和Servlet1)、M = JavaBeans:⽤于传递数据,拥有与数据相关的逻辑处理2)、V = JSP:从Model接收数据并⽣成HTML3)、C = Servlet:接收HTTP请求并控制Model和View4、jdbc连接,可参考⽂章:⼆、代码演⽰,实现了book的添加删除和修改功能1、环境的配置myeclipse+tomcat+MySQL2、Book中bean类package example.bean.book;public class Book {// 编号private int id;// 图书名称private String name;// 价格private double price;// 数量private int bookCount;// 作者private String author;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) { = name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public int getBookCount() {return bookCount;}public void setBookCount(int bookCount) {this.bookCount = bookCount;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}}3、Servlet类1)、FindServlet.javapackage example.servlet.book;import java.io.IOException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;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 example.bean.book.Book;/*** Servlet implementation class FindServlet*/public class FindServlet extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse* response)*/protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {try {// 加载数据库驱动,注册到驱动管理器Class.forName("com.mysql.jdbc.Driver");// 数据库连接字符串String url = "jdbc:mysql://localhost:3306/db_book?useUnicode=true&characterEncoding=utf-8"; // 数据库⽤户名String username = "root";// 数据库密码String password = "";// 创建Connection连接Connection conn = DriverManager.getConnection(url, username,password);// 添加图书信息的SQL语句String sql = "select * from tb_books";// 获取StatementStatement statement = conn.createStatement();ResultSet resultSet = statement.executeQuery(sql);List<Book> list = new ArrayList<Book>();while (resultSet.next()) {Book book = new Book();book.setId(resultSet.getInt("id"));book.setName(resultSet.getString("name"));book.setPrice(resultSet.getDouble("price"));book.setBookCount(resultSet.getInt("bookCount"));book.setAuthor(resultSet.getString("author"));list.add(book);}request.setAttribute("list", list);resultSet.close();statement.close();conn.close();} catch (Exception e) {e.printStackTrace();}request.getRequestDispatcher("book_list.jsp").forward(request, response);}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse* response)*/protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}2)、UpdateServlet.java类package example.servlet.book;import java.io.IOException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/*** Servlet implementation class UpdateServlet*/public class UpdateServlet extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse* response)*/protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {int id = Integer.valueOf(request.getParameter("id"));int bookCount = Integer.valueOf(request.getParameter("bookCount"));try {// 加载数据库驱动,注册到驱动管理器Class.forName("com.mysql.jdbc.Driver");// 数据库连接字符串String url = "jdbc:mysql://localhost:3306/db_book";// 数据库⽤户名String username = "root";// 数据库密码String password = "";// 创建Connection连接Connection conn = DriverManager.getConnection(url, username,password);// 更新SQL语句String sql = "update tb_books set bookcount=? where id=?";// 获取PreparedStatementPreparedStatement ps = conn.prepareStatement(sql);// 对SQL语句中的第⼀个参数赋值ps.setInt(1, bookCount);// 对SQL语句中的第⼆个参数赋值ps.setInt(2, id);// 执⾏更新操作ps.executeUpdate();// 关闭PreparedStatementps.close();// 关闭Connectionconn.close();e.printStackTrace();}// 重定向到FindServletresponse.sendRedirect("FindServlet");}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse* response)*/protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}3)、DeleteServlet类package example.servlet.book;import java.io.IOException;import java.sql.Connection;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import example.dao.book.BookJdbcDao;import example.dao.book.ConnectionFactory;/*** Servlet implementation class DeleteServlet*/public class DeleteServlet extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse* response)*/protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {int id = Integer.valueOf(request.getParameter("id"));try {// // 加载数据库驱动,注册到驱动管理器// Class.forName("com.mysql.jdbc.Driver");// // 数据库连接字符串// String url = "jdbc:mysql://localhost:3306/db_book";// // 数据库⽤户名// String username = "root";// // 数据库密码// String password = "";// // 创建Connection连接// Connection conn = DriverManager.getConnection(url, username,// password);// // 删除图书信息的SQL语句// String sql = "delete from tb_books where id=?";// // 获取PreparedStatement// PreparedStatement ps = conn.prepareStatement(sql);// // 对SQL语句中的第⼀个占位符赋值// ps.setInt(1, id);// // 执⾏更新操作// ps.executeUpdate();// // 关闭PreparedStatement// ps.close();// // 关闭Connection// conn.close();BookJdbcDao bookDao=new BookJdbcDao();Connection conn=ConnectionFactory.getInstance().getConnection();bookDao.delete(conn,id);} catch (Exception e) {e.printStackTrace();}// 重定向到FindServletresponse.sendRedirect("FindServlet");}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse* response)*/protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}4、servlet访问url映射配置:由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把servlet程序映射到⼀个URL地址上,这个⼯作在web.xml⽂件中使⽤<servlet>元素和<servlet-mapping>元素完成,<servlet>元素⽤于注册Servlet,它包含有两个主要的⼦元素:<servlet-name>和<servlet-class>,分别⽤于设置Servlet的注册名称和Servlet的完整类名。
软件工程系《JSP应用技术》实验指导书专业班级:软件10-1、2指导教师:刘瑞玲实验一 JSP开发环境的搭建一、实验目的1.熟练掌握Tomcat服务器的安装与配置,为后续实验做好准备工作;2.掌握Web服务目录的设置;3.熟练掌握Web服务目录下JSP页面的访问;4.掌握Tomcat服务器端口号的修改。
二、实验环境与地点PC机一台:JDK6.0+Tomcat6.0+编辑器三、实验内容与步骤1.Tomcat服务器的安装与配置;(1)下载jdk6.0进行安装,同时配置系统变量PATH与CLASSPATH。
(2)下载Tomcat6.0,将其安装到硬盘的某个分区,如D:\。
2.Web服务目录的设置;(1)在D:\下新建一个目录,名称为student,将student目录设置为Web服务目录,并为该Web 服务目录指定名字为friend的虚拟目录。
打开Tomcat目录中conf文件夹里的文件,找到出现</Host>的部分。
然后在</Host>的前面加入:<Context path=" " docBase=" " debug=0 reloadable="true" /> (2)修改端口号为9999。
在文件中找到修改端口号部分,默认端口修改为9999。
(3)启动Tomcat服务器。
如果已经启动,应该,并重新启动。
3.JSP页面的访问;(1)使用“记事本”编写一个简单的JSP页面,文件名用自己的姓名拼音命名(如张三:zhangSan.jsp),文件名是,并保存到Web服务目录student中。
(2)打开上一步建立的JSP页面进行编辑,使其页面运行起来时显示你的专业、班级、学号,姓名。
(3)在浏览器的地址栏中输入Tomcat服务器的IP地址和端口号,并通过虚拟目录friend访问Web服务目录student中第7步编辑后的JSP页面,访问路径是:。
使用JSP对数据库进行增删改查JSP(Java Server Pages)是一种用于开发Web应用程序的Java技术。
它可以直接在HTML页面中嵌入Java代码,实现动态生成页面内容。
在使用JSP进行数据库的增删改查操作时,通常需要借助JDBC(Java Database Connectivity)来进行数据库的连接和操作。
接下来,需要进行数据库的连接。
可以使用JDBC提供的DriverManager类和Connection接口来实现。
首先,需要定义数据库的相关信息,如驱动程序名称、数据库URL、用户名和密码。
然后,使用DriverManager的静态方法getConnection(来获取数据库连接,传入相应的参数。
例如,对于MySQL数据库,可以使用如下代码进行连接:String url = "jdbc:mysql://localhost:3306/database_name"; // 数据库URLString userName = "root"; // 数据库用户名String password = "password"; // 数据库密码try//加载驱动程序Class.forName(driverName);//获取数据库连接Connection connection = DriverManager.getConnection(url, userName, password);//...} catch (ClassNotFoundException e)e.printStackTrace(;} catch (SQLException e)e.printStackTrace(;连接成功后,接下来可以进行数据库的增删改查操作。
通常,可以使用JDBC的Statement或PreparedStatement对象来执行SQL语句。
Statement对象用于静态SQL语句,而PreparedStatement对象用于动态SQL语句。
Action 包下面的class文件:package action;import erDao;import erDaoImp;import er;public class UserAction {private User user;public String add(){UserDao userDao = new UserDaoImp();try {userDao.save(user);return"success";} catch (Exception e) {e.printStackTrace();return"error";}}public String update(){UserDao userDao = new UserDaoImp();try {userDao.updata(user);System.out.print("----");return"success";} catch (Exception e) {e.printStackTrace();return"error";}}public String delete(){UserDao userDao = new UserDaoImp();try {userDao.deleteById(user.getId());return"success";} catch (Exception e) {e.printStackTrace();return"error";}}public String show(){UserDao userDao = new UserDaoImp();try {user = userDao.findById(user.getId());return"success";} catch (Exception e) {e.printStackTrace();return"error";}}public User getUser() {return user;}public void setUser(User user) {er = user;}}package action;import java.util.List;import erDao;import erDaoImp;import er;public class UserListAction {private List<User> users;public List<User> getUsers() {return users;}public void setUsers(List<User> users) { ers = users;}public String execute(){UserDao userDao = new UserDaoImp();try {users = userDao.findAll();return"success";} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();return"error";}}}Dao 下面的class文件package dao;import java.util.List;import er;public interface UserDao {public void save(User user) throws Exception;public void updata(User user) throws Exception;public void deleteById(int id) throws Exception;public User findById(int id) throws Exception;public List<User> findAll() throws Exception;}Daoimpl包下面的class文件package daoimp;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.ArrayList;import java.util.List;import util.DBUtil;import erDao;import er;public class UserDaoImp implements UserDao {static final String insert = "insert into t_user(username,pwd,age) values(?,?,?)";static final String findAll = "select * from t_user";static final String delete = "delete from t_user where id=?";static final String findById = "select * from t_user where id=?";static final String update = "update t_user set username=?,pwd=?,age=? where id=?";public List<User> findAll() throws Exception {Connection con = DBUtil.getConnection();PreparedStatement pst = con.prepareStatement(findAll);ResultSet rs = pst.executeQuery();List<User> users = new ArrayList<User>();while(rs.next()){User user = new User();user.setId(rs.getInt("id"));user.setUsername(rs.getString("username"));user.setPassword(rs.getString("pwd"));user.setAge(rs.getInt("age"));users.add(user);}con.close();return users;}public User findById(int id) throws Exception {Connection con = DBUtil.getConnection();PreparedStatement pst = con.prepareStatement(findById);pst.setInt(1, id);ResultSet rs = pst.executeQuery();if(rs.next()){User user = new User();user.setId(rs.getInt("id"));user.setUsername(rs.getString("username"));user.setPassword(rs.getString("pwd"));user.setAge(rs.getInt("age"));return user;}DBUtil.close(con);return null;}@Overridepublic void deleteById(int id) throws Exception {// TODO Auto-generated method stubConnection con = DBUtil.getConnection();PreparedStatement pstmt = con.prepareStatement(delete);pstmt.setInt(1, id);pstmt.executeUpdate();con.close();}@Overridepublic void save(User user) throws Exception {// TODO Auto-generated method stubConnection con = DBUtil.getConnection();PreparedStatement pstmt = con.prepareStatement(insert);pstmt.setString(1, user.getUsername());pstmt.setString(2, user.getPassword());pstmt.setInt(3, user.getAge());pstmt.executeUpdate();con.close();}@Overridepublic void updata(User user) throws Exception {// TODO Auto-generated method stubConnection con = DBUtil.getConnection();PreparedStatement pstmt = con.prepareStatement(update);pstmt.setString(1, user.getUsername());pstmt.setString(2, user.getPassword());pstmt.setInt(3, user.getAge());pstmt.setInt(4, user.getId());pstmt.executeUpdate();con.close();}}实体层entity包下面的class文件:package entity;public class User {private int id;private String username;private String password;private int age;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {ername = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}JSP文件:Add.jsp<body><form action="add.action"method="post"><table border="1"align="center"><tr><td>UserName:</td><td><input type="text"name="ername"></td> </tr><tr><td>PassWord:</td><td><input type="password"name="user.password"></td> </tr><tr><td>Age:</td><td><input type="text"name="user.age"></td></tr><tr align="center"><td colspan="2"><input type="submit"value="添加"><a href="list.action">查看用户列表</a></td></tr></table></form><!--<h1>添加</h1><form action="add.action" method="post">用户名:<input type="text" name="ername"><br/>密 码:<input type="password" name="user.pwd"><br/> name="user.pwd"><br/>年 龄:<input type="text" name="user.age"><br/><input type="submit" value="添加"><a href="list.action">查看用户列表</a></form>--></body>Error.jsp<body><h1>系统错误!请稍候重试....!</h1><br></body>List.jsp<body><table border="1"align="center"><tr><th>ID:</th><th>UserName:</th><th>Age:</th><th>相关操作</th></tr><s:iterator value="users"><!-- 遍历 value是集合的对象 --> <tr><td><s:property value="id"/></td><td><s:property value="username"/></td><td><s:property value="age"/></td><td><a href='delete.action?user.id=<s:property value="id"/>'>删除</a><a href='show.action?user.id=<s:property value="id"/>'>查看</a><a href='update_init.action?user.id=<s:property value="id"/>'>修改</a></td></tr></s:iterator><tr align="center"><td colspan="4"><a href="add.jsp">添加</a></td> </tr></table><br/></body>Show.jsp<body>用户名:<s:property value="ername"/><br>密 码:<s:property value="user.password"/><br>年 龄:<s:property value="user.age"/><br><a href="list.action">返回</a></body>Update.jsp<body><h1>用户更新</h1><s:form action="update"theme="simple"method="post"><s:textfield name="user.id"/>用户名:<s:textfield name="ername"/><br/>密 码:<s:password name="user.password" showPassword="true"/><br/>年 龄:<s:textfield name="user.age"/><br/><input type="submit"value="更新"><a href="list.action">查看用户列表</a></s:form></body>。
JSP 更新、添加与删除操作更新数据库中的数据,可以使用SQL语句的UPDATE、INSERT和DELETE 操作,然后将包含UPDATE、INSERT、DELETE的SQL语句交给Statement对象的executeUpdate()方法执行。
Statement对象用于执行不带参数的简单SQL语句。
在J SP程序中,由于外部环境的变化,后台连接数据库中的数据每隔一段时间,就需要更新。
我们不可能直接打开MySQL数据库进行更新,一般情况下都是借助JSP程序进行更新。
1.数据添加案例现在创建一个案例,演示对数据库完成添加操作。
在JSP中,要完成数据库记录的添加操作,需要两个JSP页面,一个为数据输入页面,一个为处理数据页面。
参数值,并依据这些参数值创建sql添加语句。
变量name在获取name的参照值后,还需要进行编码转换,其语句为“name=new String(name.getBytes("iso-8859-1"))”。
下面使用对象stmt的方法executeUpdate执行相应的sql语句。
将上述两个文件复制到Tomcat服务器运行目录下。
打开IE浏览器,在地址栏中输入http://localhost:8080/JSPExample/MySQLInsert.jsp,单击【转到】,会显示如图6-10所示窗口:图6-10 数据添加输入页面在图6-10中的文本域中,分别输入要添加的信息。
然后单击【提交】按钮,会显示如图6-11所示窗口:图6-11 数据添加成功2.删除和修改数据执行删除与修改操作也非常简单,都可以通过向数据库发送sql语句来完成。
只不过执行的sql语句不同罢了。
下面创建一个案例,演示对MySQL数据库执行数据修改和删除。
打开记事本,创建MySQLGeng.jsp文件,完成数据的修改和删除操作。
其代码如下所示:将上述代码保存,并将文件复制到C:\Tomcat 6.0\webapps\JSPExample目录下。
jsp数据库实验报告JSP数据库实验报告引言:JSP(JavaServer Pages)是一种用于开发动态Web应用程序的Java技术。
它允许开发人员将Java代码嵌入到HTML页面中,以实现动态内容的生成和展示。
在本次实验中,我们将探索JSP与数据库的结合,以实现数据的存储和检索功能。
一、实验背景随着Web应用程序的发展,对于数据的存储和管理需求也越来越高。
数据库成为了解决这一问题的重要工具。
在本次实验中,我们将使用MySQL数据库,并通过JSP技术实现与数据库的交互。
二、实验环境本次实验所使用的环境如下:1. 操作系统:Windows 102. 开发工具:Eclipse3. 服务器:Apache Tomcat4. 数据库:MySQL三、实验步骤1. 创建数据库在MySQL中创建一个名为"student"的数据库,用于存储学生信息。
2. 创建表在"student"数据库中创建一个名为"student_info"的表,用于存储学生的姓名、年龄和成绩等信息。
3. 编写JSP页面创建一个名为"student.jsp"的JSP页面,用于展示学生信息和实现数据的存储和检索功能。
在页面中,我们可以通过HTML表单收集学生信息,并将其存储到数据库中。
同时,我们还可以通过查询表单实现对学生信息的检索。
4. 编写JavaBean创建一个名为"Student.java"的JavaBean类,用于封装学生信息。
该类包含姓名、年龄和成绩等属性,并提供相应的getter和setter方法。
5. 编写数据库操作类创建一个名为"DBUtil.java"的数据库操作类,用于与MySQL数据库进行交互。
该类包含连接数据库、插入数据和查询数据等方法。
6. 配置web.xml文件在web.xml文件中配置JSP页面的访问路径和数据库连接信息。
JSP 分页查询1.首先创建数据库,以图书信息查询系统为例,在SQL Server 中创建一个名为BOOKDB的数据库,并在其库中创建一个TBL_BOOK 表,存储图书信息。
SQL 脚本如下:/*---设置当前数据库为master ,以便访问sysdatabases 表---*/USE masterGO/*---检测是否已经存在bookDB 数据库:查询master 数据库中的系统表sysdatabases ,如果存在则删除该数据库---*/IF EXISTS(SELECT*FROM sysdatabases WHERE name='BOOKDB') DROP DATABASE BOOKDB --删除数据库GO/*-----创建数据库-----*/CREATE DATABASE BOOKDBON primary(/*--数据文件的具体描述--*/NAME='BOOKDB_data',--主数据文件的逻辑名称FILENAME='D:\BOOKDB_data.mdf',--主数据文件的物理名称SIZE= 5mb,--主数据文件的初始大小MAXSIZE= 80mb,--主数据文件增长的最大值FILEGROWTH= 15%--主数据文件的增长率)LOG ON(/*--日志文件的具体描述--*/NAME='BOOKDB_log',--日志文件的逻辑名称FILENAME='d:\BOOKDB_log.ldf',--日志文件的物理名称SIZE= 3mb,--日志文件的初始大小MAXSIZE= 20mb,--日志文件增长的最大值FILEGROWTH= 2mb --日志文件的增长率)GO/*---设置当前数据库为bookDB ,以便访问bookDB 数据库---*/USE BOOKDBGO/*---检测在bookDB 数据库中是否已经存TBL_BOOK 表:查询系统表sysobjects ,如果存在则删除该表---*/IF EXISTS(SELECT*FROM sysobjects WHERE name='TBL_BOOK') DROP TABLE TBL_BOOK --删除数据库/*-----创建数据库表TBL_BOOK (图书信息)-----*/CREATE TABLE TBL_BOOK(book_id INT IDENTITY(1000,1)PRIMARY KEY,--标识列,自增,主键book_name VARCHAR(50),--图书名称book_num VARCHAR(50)NOT NULL,--图书编号,非空book_author VARCHAR(50)NOT NULL,--图书作者,非空book_price MONEY,--图书价格book_synopsis TEXT,--图书简介book_publishTime DATETIME--图书出版日期)GO/*--添加唯一约束(将bookNum 作为唯一键)--*/ALTER TABLE TBL_BOOKADD CONSTRAINT UQ_book_num UNIQUE(book_num)/*--添加默认约束(如果publishTime 不填,默认当前时间)--*/ALTER TABLE TBL_BOOKADD CONSTRAINT DF_book_publishTime DEFAULT(GETDATE())FORbook_publishTimeGO/*--添加数据--*/INSERT INTO TBL_BOOKSELECT'SQL Server 高级编程','XV001001','张无忌','86','重点讲解T-SQL 编程','2010-08-08'UNIONSELECT'MySQL 高级编程','XV001002','张国荣','36','重点讲解MySQL 的高级运用','2010-08-07'UNIONSELECT'JAVA 高级编程','XV001003','周杰伦','130','零基础学JAVA','2010-02-06'UNIONSELECT'C# 高级编程','XV001004','张三丰','99','c# 从入门到精通','2010-07-07'UNIONSELECT'JSP 高级编程','XV001005','陆逊','65','JSP 新手入门新教材','2010-02-03'UNIONSELECT'PHP 高级编程','XV001006','周瑜','45','好学好用PHP 经典教材','2010-04-07'UNIONSELECT'ASP 高级编程','XV001007','诸葛亮','180','最牛的c# 教程体系','2010-09-08'UNIONSELECT'ASP.ENT 高级编程','XV001008','曹操','250','一看就会的教材','2010-08-23'UNIONSELECT'Oracle 高级编程','XV001009','李白','140','Oracle 新手解惑','2010-08-18'UNIONSELECT'DB2 高级编程','XV001010','孔子','860','db2 程序员的宝典','2010-08-01'UNIONSELECT'MySQL 手册','XV001011','孙子','43','MySQL 编程最佳助手','2010-02-02'UNIONSELECT'SQL 手册','XV001012','老子','100','数据库通用手册,程序员必备','2010-01-07'UNIONSELECT'JAVA API 文档','XV001013','周仓','110','JAVA 程序员必备手册','2010-02-05'UNIONSELECT'C# 完全手册','XV001014','鲁迅','92','c# 程序员的良伴','2010-03-07' UNIONSELECT'C 高级编程','XV001015','和珅','120','一切程序的起点','2010-02-13' UNIONSELECT'C++ 高级编程','XV001016','纪晓岚','145','学会C++,走片天下都不怕','2010-04-27'UNIONSELECT'C++ 完全手册','XV001017','薛宝钗','118','选手册,C++ 完全手册才是好手册','2010-09-18'UNIONSELECT'C 语言入门到精通','XV001018','雷锋','150','不要让程序把你拒之门外','2010-08-21'UNIONSELECT'数据结构与算法C++ 版','XV001019','雄霸','108','最简单的设计思维','2010-08-11'UNIONSELECT'设计模式','XV001020','徐峥','148','最具权威的程序设计书籍','2010-09-21'UNIONSELECT'数据结构与算法JAVA 版','XV001021','李寻欢','240','最好的程序设计书籍','2010-05-18'GO2.在Eclipse 中新建一个项目名为BookPagin ,并在其项目的src 下创建mons (公共包)、com.book.entity(实体包)、com.book.pagin(JavaBean 包) ,然后将SQL Server 的JDBC 驱动包复制到WebRoot 下的WEB-INF 下的lib 目录中。
如何用jsp连接Access数据库帐户gjt的163博客前期准备:建立一个Access数据库test.mdb,在里面建立一个表username,其中包含两个字段uid和pwd,均为文本型。
放在项目的web里面(也可以在其他地方)。
方法一:直接用jsp网页链接,代码如下:<%@page contentType="text/html" pageEncoding="UTF-8" language="java"import="java.sql.*"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><%try {String spath = "test.mdb";String dbpath = application.getRealPath(spath);String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=" + dbpath;Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection conn = DriverManager.getConnection(url);Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);String sql = "select * from username";ResultSet rs = stmt.executeQuery(sql);while (rs.next()) {out.print("用户名:");out.print(rs.getString("uid") + " 密码:");out.print(rs.getString("pwd") + "<br>");}out.print("<br>恭喜你!数据库连接成功!");rs.close();stmt.close();conn.close();} catch (Exception e) {out.print("数据可连接错误!,错误信息如下:<br>");out.print(e.getMessage());}%>方法二:建立Access连接的JavaBean,再用jsp引用(推荐这个方法)首先建立一个JavaBean文件DBConnAccess.java,代码如下import java.sql.*; //导入数据库操作的类public class DBConnAccess { //构造方法,初始化private Connection conn; //连接对象private Statement stmt; //语句对象private ResultSet rs; //结果集对象private String accessdriver; //保存Access驱动程序字符串private String accessURL; //保存Access连接字符串public DBConnAccess(){//Access驱动程序accessdriver = "sun.jdbc.odbc.JdbcOdbcDriver";//连接字符串accessURL = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="; conn = null;}public Connection getConnToAccess(String dbpath){try{accessURL = accessURL + dbpath;Class.forName(accessdriver);conn = DriverManager.getConnection(accessURL);}catch(Exception e){System.out.println("操作数据库出错,请仔细检查");System.err.println(e.getMessage());}return conn;}//关闭数据库连接public void close(){try{//rs.close();//stmt.close();conn.close();}catch(SQLException sqlexception){sqlexception.printStackTrace();}}}再建立一个jsp文件test.jsp用于测试数据访问效果,代码如下:<%@page contentType="text/html" pageEncoding="UTF-8" language="java"import="java.sql.*"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><jsp:useBean id="DBConn" scope="page" class="cn.fsmo.baidu.base.DBConnAccess"/> <%//连接Accesss数据库String dbpath = "test.mdb"; //Connection conn = DBConn.getConnToAccess(application.getRealPath(dbpath));Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);String sql = "select * from username order by uid";ResultSet rs = stmt.executeQuery(sql);while (rs.next()) {out.print("用户名:");out.print(rs.getString("uid") + " 密码:");out.print(rs.getString("pwd") + "<br>");}DBConn.close();%>以上两个方法值得注意的地方是:1、连接字符串的正确写法,“jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=”后面再加上Access数据库文件的地址及文件名;注意到其中的Driver (*.mdb)中的“r”与“(”之间一定要有空格,否则出错,我就是犯了这个错误,花了很多冤枉时间才改正过来。
数据库应用程序,特别是基于WEB的数据库应用程序,常会涉及到图片信息的存储和显示。
通常我们使用的方法是将所要显示的图片存在特定的目录下,在数据库中保存相应的图片的名称,在JSP中建立相应的数据源,利用数据库访问技术处理图片信息。
但是,如果我们想动态的显示图片,上述方法就不能满足需要了。
我们必须把图片存入数据库,然后通过编程动态地显示我们需要的图片。
实际操作中,可以利用JSP的编程模式来实现图片的数据库存储和显示。
2、建立后台数据库假定处理的是图片新闻,那么我们可以建立相应的数据库及数据表对象。
我们要存取的数据表结构的SQL脚本如下所示:if exists (select * from dbo.sysobjects where id =object_id(N'[dbo].[picturenews]') andOBJECTPROPERTY(id, N'IsUserTable') = 1)drop table [dbo].[picturenews]GOCREATE TABLE [dbo].[picturenews] ([id] [int] IDENTITY (1, 1) NOT NULL ,[image] [image] NULL ,[content] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,[detail] [varchar] (5000) COLLATE Chinese_PRC_CI_AS NULL) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]GO表picturenews中,字段id作为标识,每存储一行数据,自动增加1。
字段image 用于存储图片信息,其数据类型为“image”。
3、向数据库存储二进制图片启动Dreamweaver MX后,新建一个JSP文件。
其代码如下所示。
<%@ page contentType="text/html;charset=gb2312"%><HTML><HEAD><TITLE>存储图片</TITLE></HEAD><body><!-- 下面的窗体将以Post方法,将数据传递给testimage.jsp文件 --><FORM METHOD=POST ACTION="testimage.jsp">新闻标题:<INPUT TYPE="text" NAME="content"><BR>新闻图片:<INPUT TYPE="file" NAME="image"><BR>新闻内容:<TEXTAREA name="txtmail" rows="15" cols="90"style="BORDER-BOTTOM: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; FONT-SIZE: 9pt;HEIGHT: 200px; WIDTH: 100%" wrap="physical" ></TEXTAREA><br><INPUT TYPE="submit"></form></HTML>将此文件保存为InputImage.jsp文件,其中testimage.jsp文件是用来将图片数据存入数据库的,具体代码如下所示:<%@ page contentType="text/html;charset=gb2312"%><%@ page import="java.sql.*" %><%@ page import="java.util.*"%><%@ page import="java.text.*"%><%@ page import="java.io.*"%><html><body><%Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//加载驱动程序类Connectioncon=DriverManager.getConnection("jdbc:odbc:denglu","sa","sa");//建立数据库联机,其中denglu为数据库名,sa为连接数据库的帐号及密码。
实验全过程记录一、实验目的熟悉JDBC模式连接到MySQL数据库掌握JSP下的MySQL数据库操作掌握Session对象的相关操作二、实验内容点击实验二中实验内容二的“我的信息”链接,浏览器页面跳转至显示个人信息的表单,表单里已填充个人信息,如右图所示。
1001学号张三姓名*****密码22年龄170身高软件学院学院提交用户可以修改自己的信息,修改完毕后,点击提交,完成个人信息的更新,同时页面跳转至右图所示的页面我的信息退出删除我的信息点击上页页面中的“退出”链接,在servlet中清楚session里的信息,页面跳转至右图所示的登录页面。
学号密码登录点击右图中的“删除我的信息”链接,在servlet中根据学号删除当前用户的信息,页面跳转至下图所示的页面。
学号姓名密码年龄身高软件学院学院提交三、实验用设备仪器及材料软件需求:Eclipse硬件需求:微型计算机四、实验方法及步骤String state = request.getParameter("state");HttpSession session = request.getSession();String stuId = (String) session.getAttribute("currentUser");UpdataService db = new UpdataService();if(state.equals("1")){StudentMessage student = db.selectByStuId(stuId);request.setAttribute("student",student);request.getRequestDispatcher("/FormSubmit.jsp").forward(request, response);}if(state.equals("2")){System.out.println(stuId);session.removeAttribute("currentUser");request.getRequestDispatcher("/Login.jsp").forward(request, response);}if(state.equals("3")){db.deleteByStuId(stuId);request.getRequestDispatcher("/FormSubmit.jsp").forward(request, response);}五、实验结果分析对实验内容分析之后,结合百度的知识和老师的PPT内容,进行了实验的操作,实验过后我进一步的熟悉了JDBC模式连接到MySQL数据库、掌握JSP下的MySQL数据库操作以及掌握Session对象的相关操作,对javaweb的学习有了更好的理解。
Jsp程序设计复习答案《JSP程序设计》复习题一、选择题1.在传统的HTML页面中加入(D)就构成了一个JSP页面文件。
A、JAVA程序片B、JSP标签C、用“<%”、“%>”标记符号括起来的程序D、JAVA程序片和JSP标签2.配置JSP运行环境,若WEB应用服务器选用TOMCAT,以下说法正确的是:(B)A、先安装TOMCAT,再安装JDKB、先安装JDK,再安装TOMCATC、不需安装JDK,安装TOMCAT就可以了D、JDK和TOMCAT只要都安装就可以了,安装顺序没关系3.对于“<%!”、“%>”之间声明的变量,以下说法正确的是:( B)A、不是JSP页面的成员变量B、多个用户同时访问该页面时,任何一个用户对这些变量的操作,都会影响到其他用户C、多个用户同时访问该页面时,每个用户对这些变量的操作都是互相独立的,不会互相影响D、是JSP页面的局部变量4.在客户端浏览器的源代码中可以看到( B)A、JSP注释B、HTML注释C、JSP注释和HTML注释D、JAVA注释5.page指令的作用是:(A)A、用来定义整个JSP页面的一些属性和这些属性的值B、用来在JSP页面内某处嵌入一个文件C、使该JSP页面动态包含一个文件D、指示JSP页面加载Java plugin6.page指令的import属性的作用是( C )A、定义JSP页面响应的MIME类型B、定义JSP页面使用的脚本语言C、为JSP页面引入JAVA包中的类D、定义JSP页面字符的编码7.( C)可在JSP页面出现该指令的位置处,静态插入一个文件。
A、page指令标签B、page指令的import属性C、include指令标签D、include动作标签8.以下对象中的(D)不是JSP的内置对象。
A、requestB、sessionC、applicationD、bean9.在JSP中,内置对象(B)封装了用户提交的信息,使用该对象可以获取用户提交的信息。
动态网页修改数据库数据JSP动态网页连接访问数据库,修改数据的操作一般有两种方式,一种是用于前台的,只能修改数据库表中的一条记录;另一种是用于后台系统管理员操作使用的,可以方便的修改表中的任何一条记录。
本节分别对两种进行介绍。
一、范例的演示和代码清单演示的前提和前几节完全相同。
演示步骤:1.启动IE,在地址栏键入http://127.0.0.1:8080/ch4/ch4-51.htm,用户名处,输入数据库表中,已经存在的一个用户名;密码处输入对应的密码。
如图4-60所示窗口:图4-602.单击“提交”按钮。
出现该用户所有资料的列表,其中用户名和密码两项,注有“不能更改”提示,其他项目都可以进行修改的操作。
如图4-61所示窗口:图4-613.在对应的文本框中,将需要变动的数据进行修改,然后单击“修改”按钮。
屏幕出现修改成功的信息,以及修改后数据列表。
如图4-62所示窗口:图4-624.至此一条指定的数据记录修改完成。
这属于一般用于前台,用户修改自己的注册资料用的修改方式。
用于后台的系统管理员修改方式,请在此单击“返回浏览修改”,或返回主页后,单击“浏览修改”。
出现浏览修改的界面。
如图4-63所示窗口:图4-635.网页窗口显示的是,数据库表中的所有数据记录。
并且在每一条记录的后面,有一个“修改”的链接。
单击任何一条数据记录后面的“修改”,进入数据修改界面。
如图4-64所示窗口:图4-646.这个网页窗口和前面单独修改一条记录的图4-61界面一样,只是数据内容不同。
它们实际上是调用的同一个JSP动态网页。
改动某些数据后,单击“修改”按钮。
出现修改成功的信息,以及修改后数据列表。
如图4-65所示窗口:图4-657.这个网页窗口和前面单独修改一条记录成功的图4-62界面一样,只是数据内容不同。
它们实际上也是调用的同一个JSP动态网页。
单击“返回浏览修改”,可以进行下一条记录的修改。
这个范例由四个网页构成:1.ch4-51.htm:用表单的形式,提供需要修改数据记录的用户名、密码,表单的action指向ch4-51.jsp。
J2EE开发环境的搭建Jsp+Mysql+Tomcat+MyEclipse简单的增删改查许斌Bingo的博客/xubinster目录一、安装和配置JDK ---------------------------------------------------------------------------------------------------------------- 3二、安装TOMCAT------------------------------------------------------------------------------------------------------------------ 12三、安装Java IDE开发工具Eclipse或MyEclipse ------------------------------------------------------------------------- 19四、MySQL的安装 ----------------------------------------------------------------------------------------------------------------- 40五、安装Mysql Front --------------------------------------------------------------------------------------------------------------- 58六、创建数据库---------------------------------------------------------------------------------------------------------------------- 66七、添加Mysql链接驱动 --------------------------------------------------------------------------------------------------------- 67八、增删查改功能页面制作 ------------------------------------------------------------------------------------------------------ 69 J2EE开发环境的搭建,其实不复杂,下面我以初学者为例,简单总结如下:下面以MySQL+tomcat+Eclipse为例环境准备,搭建环境之前需要准备好搭建用到的程序:Jdk—开发java程序用于编译和运行java的环境Tomcat—Web中间件,用于管理运行java web应用Mysql—开源简单易用的关系型数据库Mysql front—管理MySQL的界面工具Eclipse—JAVA最流行的开源的开发工具IDE环境步骤1、安装和配置JDK2、安装TOMCAT3、安装Eclipse4、创建web工程5、MySQL的安装6、安装Mysql Front7、创建数据库8、添加Mysql链接驱动9、实现简单的增删查改环境搭建:Jdk—1.6.0_21Tomcat—6.0.18.0Myeclipse—9.0Mysql—4.1Mysql front—5.1一、安装和配置JDK官方网址:安装JDK傻瓜式安装,下一步即可。
在jsp页面中对数据库进行操作的步骤:
1,创建一个数据源。
2, 加载JDBC-ODBC驱动程序。
Class.forName("com.microsoft.jdbc.sqlserver.SQLSe rverDriver");
3,建立一个到数据库的连接。
Connection
conn=DriverManager.getConnection("jdbc:odbc:gra de");
4, 测试
out.print("成功,jdbc驱动可以用");
创建语句对象
Statement
st=conn.createStatement( );
写出sql语句
String sql=“select * from students”;
执行sql语句,得到结果集ResultSet rs=st.executeQuery(sql);
把结果集以表格形式显示在页面上<table width="700" border="1" cellspacing="0">
<tr>
<td>学号</td>
<td>姓名</td>
<td>数学</td>
<td>英语</td>
<td>物理</td>
</tr>
<% while(rs.next()){ %>
<tr>
<td><%
out.print(rs.getString(1)); %></td> <td><%
out.print(rs.getString(2)); %></td> <td> <% out.print(rs.getInt(3)); %></td>
<td><%
out.print(rs.getInt(4)); %></td>
<td><%
out.print(rs.getInt(5)); %></td>
</tr><% }%>
</table>
关闭rs
rs.close( );
关闭st
st.close();
关闭conn
conn.close();。