简单Servlet/JDBC/JSP实例
2016-07-15 09:59
483 查看
简单Servlet/JDBC/JSP实例
实例概述
[align=left]1.已知有文件:a.txt(以UTF-8编码格式)放在d:\根目录下。格式为 学号,姓名,出生日期[/align][align=left][/align]
[align=left]
[/align]
[align=left]2.在war包启动时,把a.txt转换为b.txt(GBK编码存储),放在d:\根目录下。内容保持不变[/align]
[align=left]
[/align]
[align=left]3.访问一个地址,访问这个地址时,读取b.txt内容存储到mysql数据库表中t_user中并从表中查询所有的用户出来显示。[/align]
不使用任何框架:仅使用Servlet/JSP/JDBC
[align=left]
[/align]
创建数据库表
[align=left][/align][align=left]
[/align]
创建Web项目
[align=left]JDK:1.7[/align][align=left]Tomcat:7.0[/align]
[align=left]Servlet API:3.0[/align]
[align=left]
[/align]
[align=left][/align]
[align=left]
[/align]
导入Jar包
[align=left]自行下载jar包,然后复制到WebContent/WEB-INF/lib/下[/align][align=left][/align]
[align=left]
[/align]
代码
[align=left]文件读取写入工具类,FileUtil[/align]package com.utils; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class FileUtil { /** * 关闭连接 * * @param target(Connection、Statement、ResultSet..) */ private static void close(AutoCloseable target) { if (target != null) { try { target.close(); } catch (Exception e) { // nothing } } } /** * 读取文件 * * @param filePath * @param encoding * @return String * @throws IOException */ public static String readFile(String filePath, String encoding) throws IOException{ String content = ""; FileInputStream fin = null; InputStreamReader in = null; BufferedReader reader = null; try { File f = new File(filePath); fin = new FileInputStream(f); in = new InputStreamReader(fin, encoding); reader = new BufferedReader(in); String line = null; while ((line = reader.readLine()) != null) { content += line + "\r\n"; } content = content.substring(0, content.lastIndexOf("\r\n")); } finally { close(fin); close(in); close(reader); } return content; } /** * 写入文件 * * @param filePath * @param content * @param encoding * @throws IOException */ public static void writeFile(String filePath, String content, String encoding) throws IOException { FileOutputStream fout = null; OutputStreamWriter out = null; BufferedWriter writer = null; try { File f = new File(filePath); if (!f.exists() && !f.isDirectory()) { f.createNewFile(); } fout = new FileOutputStream(f); out = new OutputStreamWriter(fout, encoding); writer = new BufferedWriter(out); writer.write(content);//写入缓存 } finally { close(writer); close(out); close(fout 4000 ); } } }
[align=left]自启Servlet,InitialServlet(2.在war包启动时,把a.txt转换为b.txt(GBK编码存储),放在d:\根目录下。内容保持不变)[/align]
package com.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import com.utils.FileUtil; @WebServlet("/init") public class InitialServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override public void init() throws ServletException { super.init(); try { String content = FileUtil.readFile("D:\\a.txt", "UTF-8"); FileUtil.writeFile("D:\\b.txt", content, "GBK"); } catch (IOException e) { e.printStackTrace(); } } }
[align=left]在WebContent/WEB-INF/下新建web.xml,并配置InitialServlet自启动[/align]
[align=left][/align]
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>InitialServlet</servlet-name> <servlet-class>com.servlet.InitialServlet</servlet-class> <!-- 设置自启动优先级,数值>=0 --> <load-on-startup>0</load-on-startup> </servlet> </web-app>
[align=left]创建存储数据Bean类,User[/align]
package com.bean; import java.sql.Date; public class User { public int id; public String userId; public String name; public Date birth; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Date getBirth() { return birth; } public void setBirth(Date birth) { this.birth = birth; } }
[align=left]
[/align]
[align=left]创建数据库操作类,UserDAO[/align]
package com.dao; import com.bean.User; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class UserDAO { // 初始化JDBC驱动 static { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } /** * 获取数据库连接 * * @return Connection * @throws SQLException */ private Connection getConnection() throws SQLException { return DriverManager.getConnection( "jdbc:mysql://127.0.0.1:3306/test?characterEncoding=UTF-8", "root", "123456"); } /** * 关闭连接 * @param target(Connection、Statement、ResultSet..) */ private void close(AutoCloseable target) { if (target != null) { try { target.close(); } catch (Exception e) { //nothing } } } /** * 插入User到数据库 * * @param user * @throws SQLException */ public void add(User user) throws SQLException { Connection c = null; PreparedStatement ps = null; try { c = getConnection(); String sql = "insert into t_user(user_id,name,birth) values(?,?,?)"; ps = c.prepareStatement(sql); ps.setString(1, user.userId); ps.setString(2, user.name); ps.setDate(3, user.birth); ps.execute(); } finally { close(ps); close(c); } } /** * 查询所有User * * @return List<User> * @throws SQLException */ public List<User> list() throws SQLException { List<User> users = null; Connection c = null; PreparedStatement ps = null; ResultSet rs = null; try { c = getConnection(); String sql = "select id,user_id,name,birth from t_user"; ps = c.prepareStatement(sql); rs = ps.executeQuery(); if (rs != null) { users = new ArrayList<User>(); while (rs.next()) { User user = new User(); user.id = rs.getInt("id"); user.userId = rs.getString("user_id"); user.name = rs.getString("name"); user.birth = rs.getDate("birth"); users.add(user); } } } finally { close(rs); close(ps); close(c); } return users; } }
[align=left]
[/align]
[align=left]showServlet,3.0使用注解免去配置web.xml(访问一个地址,访问这个地址时,读取b.txt内容存储到mysql数据库表中t_user中并从表中查询所有的用户出来显示)[/align]
package com.servlet; import java.io.IOException; import java.sql.Date; import java.sql.SQLException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.bean.User; import com.dao.UserDAO; import com.utils.FileUtil; @WebServlet("/show") public class ShowServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String data = FileUtil.readFile("D:\\b.txt", "GBK"); if (data != "") { try { UserDAO userDao = new UserDAO(); String[] lines = data.split("\r\n"); for (String line : lines) { String[] content = line.split(","); User user = new User(); user.setUserId(content[0]); user.setName(content[1]); user.setBirth(Date.valueOf(content[2])); userDao.add(user); } List<User> users = userDao.list(); request.setAttribute("users", users); request.getRequestDispatcher("listUser.jsp").forward(request, response); } catch (SQLException e) { e.printStackTrace(); } } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }
[align=left]创建显示页面,listUser.jsp(使用到jstl标签库)[/align]
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.*"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <table align='center' border='1' cellspacing='0'> <tr> <td>id</td> <td>name</td> <td>birth</td> </tr> <c:forEach items="${users}" var="user" varStatus="st"> <tr> <td>${user.userId}</td> <td>${user.name}</td> <td>${user.birth}</td> </tr> </c:forEach> </table>
[align=left]
[/align]
程序运行结果
运行流程图
相关文章推荐
- JavaScript学习笔记二十:标准对象-JSON
- 2016.7.14 如何在浏览器中查看jsp文件
- 实现add(2, 5); // 7 add(2)(5); // 7
- ExtJs中TextField与TextArea的只读属性设置
- innerText兼容处理
- js NaN
- 根据填写的出生日期自动带出年龄
- js实现 无缝切换 效果
- JS 在指定数组中随机取出N个不重复的数据
- JS生成随机数
- JavaScript6 let 新语法优势介绍
- Html5 js FileReader接口
- JavaScript-条件语句
- Js各种正则表达试验
- 图片javascript缩小
- 浅谈javascript运算符――条件,逗号,赋值,()和void运算符
- JavaScript计算器网页版实现代码分享
- js实现楼层效果的简单实例
- 在JavaScript中创建对象
- 你可能不知道的java、python、JavaScript以及jquary循环语句的区别