Web基础之Servlet+JDBC+JSP项目实战记录(一)
2017-05-31 13:41
471 查看
Web基础之Servlet+JDBC+JSP项目实战记录(一)
一、项目说明:
通过前面的学习,我们已经对Servlet有了一定的了解;接下来我们要结合数据库和JSP技术一步一步完成一个小型的动态web服务工程;
二、需求分析:
结合JDBC和Servlet以及JSP技术,实现对新增班级信息的功能;并要求显示新增加的班级;
三、项目思路分析:
1、安装数据库,新建班级表(字段:班级cid和班级名称cname)
2、由于一张表对应一个相应的实体;所以在Ecplise中新建一个JavaBean(ClassInfoBean)类;用来和数据库中班级表相对应;
3、加载数据库驱动,连接数据库;
4、前台界面编写
5、逻辑实现
四、项目原代码:
项目整体架构:
数据库表的建立:
ClassInfoBean类:
数据库驱动类加载以及定义操作类:
前台页面用JSP书写(JSP是实现动态页面效果的技术之一,因为JSP里面可以嵌入Java代码;还记得Request作用域吗?我们首先需要将查询出来的结果保存到Request作用域中。然后通过在服务器端执行JSP后生成响应正文给客户端;这里需要明白的是,JSP里面的Java代码是在服务器端执行完毕后,才通过响应正文到达客户端;平时我们自己写得html页面访问的是本地的资源,就相当于在本地打开了一份Word文档;JSP这部分后面会有详解;)
Servlet类处理请求:
web.xml配置文件
五、项目运行效果:
注意地址栏中的后缀是.jsp而不是html
注意地址栏中地址的变化:
六、总结
1.通过这个小项目终于把所有学习的东西串起来了;知道了前台如何和后台数据库打交道了;
2.对数据库表和实体的映射有了更深的理解;
3.由于第一次使用JSP感觉好神奇;JSP里面原来可以内嵌Java代码;这也是动态WEB工程的特色;可以根据不同的请求得到不同的结果;不像我们以前写的html界面;这种动态的感觉很高大上啊;
共勉!
一、项目说明:
通过前面的学习,我们已经对Servlet有了一定的了解;接下来我们要结合数据库和JSP技术一步一步完成一个小型的动态web服务工程;
二、需求分析:
结合JDBC和Servlet以及JSP技术,实现对新增班级信息的功能;并要求显示新增加的班级;
三、项目思路分析:
1、安装数据库,新建班级表(字段:班级cid和班级名称cname)
2、由于一张表对应一个相应的实体;所以在Ecplise中新建一个JavaBean(ClassInfoBean)类;用来和数据库中班级表相对应;
3、加载数据库驱动,连接数据库;
4、前台界面编写
5、逻辑实现
四、项目原代码:
项目整体架构:
数据库表的建立:
ClassInfoBean类:
package com.huaxin.bean; public class ClassInfoBean { /** * 属性和数据库中的字段相对应 */ private Integer cid; private String cname; public ClassInfoBean() { } public Integer getCid() { return cid; } public void setCid(Integer cid) { this.cid = cid; } public String getCname() { return cname; } public void setCname(String cname) { this.cname = cname; } }
数据库驱动类加载以及定义操作类:
package com.huaxin.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import com.huaxin.bean.ClassInfoBean; public class ClassInfoDao { static { // 加载数据库驱动 try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public void addClassInfo(ClassInfoBean bean) { Connection conn = null; Statement stmt = null; try { // 获取数据库连接 conn = DriverManager .getConnection("jdbc:mysql://localhost:3306/studentsystem?useUnicode=true&characterEncoding=UTF-8", "root", "zhou"); // 整理一条SQL语句 String sql = "INSERT INTO class_info (cname) VALUES ('" + bean.getCname() + "')"; // 创建SQL执行对象 stmt = conn.createStatement(); // 执行sql语句 int row = stmt.executeUpdate(sql); if (row != 1) { throw new RuntimeException("新增班级失败!"); } } catch (SQLException e) { e.printStackTrace(); } finally { if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } if (stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } } } public List<ClassInfoBean> findAll() { Connection conn = null; Statement stmt = null; List<ClassInfoBean> classList= new ArrayList<ClassInfoBean>(); try { // 获取连接 conn = DriverManager .getConnection("jdbc:mysql://localhost:3306/studentsystem?useUnicode=true&characterEncoding=UTF-8", "root", "zhou"); // 整理一条SQL语句 String sql = "select cid,cname from class_info"; // 创建执行sql的对象 stmt = conn.createStatement(); //执行sql语句 ResultSet rs =stmt.executeQuery(sql); //遍历结果集 while(rs.next()){ int cid =rs.getInt("cid"); String cname=rs.getString("cname"); ClassInfoBean bean = new ClassInfoBean(); bean.setCid(cid); bean.setCname(cname); classList.add(bean); } } catch (SQLException e) { e.printStackTrace(); } return classList; } }
前台页面用JSP书写(JSP是实现动态页面效果的技术之一,因为JSP里面可以嵌入Java代码;还记得Request作用域吗?我们首先需要将查询出来的结果保存到Request作用域中。然后通过在服务器端执行JSP后生成响应正文给客户端;这里需要明白的是,JSP里面的Java代码是在服务器端执行完毕后,才通过响应正文到达客户端;平时我们自己写得html页面访问的是本地的资源,就相当于在本地打开了一份Word文档;JSP这部分后面会有详解;)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import ="com.huaxin.bean.ClassInfoBean" %> <%@ page import ="java.util.List" %> <!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>班级信息界面</title> <style type="text/css"> th{ text-align: center; } td{ text-align: center; } </style> </head> <body> <div style="margin:0 auto;margin-top: 40px;"> <form action="classInfoReq" method="POST"> <center> <table width="40%"; border="1"; bgcolor="#FFFFC6"> <caption style="margin-bottom: 20px">新增班级信息</caption> <tr><td >班级名称:</td><td><input type="text" name="className"></td></tr> <tr><td><input type="reset" value="重置"></td><td><input type="submit" value="确定"></td></tr> </table> </center> </form> </div> <div style="margin:0 auto;margin-top: 40px;"> <center> <table width="40%"; border="1"; bgcolor="#FFFFC6"> <caption style="margin-bottom: 20px">班级信息列表</caption> <tr><th>班级序号</th><th>班级名称</th></tr> <% List<ClassInfoBean> classInfo=(List<ClassInfoBean>)request.getAttribute("classInfo"); if(classInfo!=null && !classInfo.isEmpty()){ for(ClassInfoBean classes : classInfo){ %> <tr><td><%=classes.getCid() %></td><td><%=classes.getCname()%></td></tr> <% } } %> </table> </center> </div> </body> </html>
Servlet类处理请求:
package com.huaxin.servlet; import java.io.IOException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.huaxin.bean.ClassInfoBean; import com.huaxin.dao.ClassInfoDao; public class ClassInfoServlet extends HttpServlet{ private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doPost(req, resp); } protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //设置编码,防止请求乱码 req.setCharacterEncoding("UTF-8"); //获取参数 String className=req.getParameter("className"); //创建ClassInfoBean对象保存信息 ClassInfoBean bean =new ClassInfoBean(); bean.setCname(className); //创建数据库操作对象 ClassInfoDao dao =new ClassInfoDao(); //新增班级信息到数据库 dao.addClassInfo(bean); //查询所有班级信息 List<ClassInfoBean> classInfo=dao.findAll(); //保存查询的班级信息 req.setAttribute("classInfo", classInfo); //转发请求 req.getRequestDispatcher("/classInfo.jsp").forward(req, resp); } }
web.xml配置文件
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>JDBC</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>classInfo</servlet-name> <servlet-class>com.huaxin.servlet.ClassInfoServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>classInfo</servlet-name> <url-pattern>/classInfoReq</url-pattern> </servlet-mapping> </web-app>
五、项目运行效果:
注意地址栏中的后缀是.jsp而不是html
注意地址栏中地址的变化:
六、总结
1.通过这个小项目终于把所有学习的东西串起来了;知道了前台如何和后台数据库打交道了;
2.对数据库表和实体的映射有了更深的理解;
3.由于第一次使用JSP感觉好神奇;JSP里面原来可以内嵌Java代码;这也是动态WEB工程的特色;可以根据不同的请求得到不同的结果;不像我们以前写的html界面;这种动态的感觉很高大上啊;
共勉!
相关文章推荐
- Web基础之Servlet+JDBC+JSP项目实战记录(三)
- Web基础之Servlet+JDBC+JSP项目实战记录(二)
- Web基础之Servlet+JDBC+JSP项目实战终结篇
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之12.Servlet基础(3)
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之12.Servlet基础(1)
- JDBC+Servlet+JSP整合开发之31-JSP项目实战 推荐
- MVC架构(一)构建JSP+Servlet+JDBC结构的web项目
- jdbc servlet 基础连接数据库实现 WEB项目
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之12.Servlet基础(2)
- JavaWeb物流管理项目开发(JSP、Servlet、JDBC):3、环境搭建
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之01.JDBC简介 推荐
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之06.JDBC PreparedStatement
- JavaWeb物流管理项目开发(JSP、Servlet、JDBC):5、搭建项目架
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之13.Form表单处理(2)
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之16.Cookie
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之33.HTML表单 推荐
- JavaWeb物流管理项目开发(JSP、Servlet、JDBC):2、搭建svn服务
- Java EE WEB工程师培训——JDBC+Servlet+JSP整合开发之21.Servlet_资源访问(访问数据库) 推荐
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之04.JDBC Resultset 推荐
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之17.Session