您的位置:首页 > Web前端 > JavaScript

简单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]

 程序运行结果


运行流程图


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: