• Controller包:表现层(视图)层。用来显示数据和接收用户数据
  • Service包:业务逻辑层,用来处理页面。先写接口,后写实现类
  • Dao包:持久层(数据访问层)。用来操作数据库

其中Dao包处于最底层,对于用户处于隐藏状态,对于开发者处于固定状态,其中包括Con_CloseSql类(数据库连接与关闭)、UserDao类(进行增删改查)与UserBeans(数据库数据)

Con_CloseSql类:

package dao;

import java.sql.*;

public class Con_CloseSql {

    final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
final String DB_URL = "jdbc:mysql://localhost:3306/表名?serverTimezone=GMT&characterEncoding=utf-8&useSSL=false"; final String USER = "root";
final String PASS = "密码";
Statement stmt = null; public Connection getConnect()
{
Connection conn = null; try{
Class.forName(JDBC_DRIVER);
String url = DB_URL;
conn = DriverManager.getConnection(url, USER, PASS);
return conn; }catch(ClassNotFoundException nfe) {
nfe.printStackTrace();
}catch(SQLException e) {
e.printStackTrace();
}
return conn;
} public static void closeConnection(Connection connection) {
if(connection != null) {
try{
connection.close();
}catch(SQLException sqle) {
sqle.printStackTrace();
}
}
} }

UserDao类:

package dao;

import bean.UserBean;
import java.sql.*;
import java.util.ArrayList;
import java.util.List; public class UserDao {

  //保存用户数据
public void saveUser(UserBean userBean) throws SQLException {
Connection connect = new Con_CloseSql().getConnect();
Statement statement = connect.createStatement(); String sql = "insert into 表名 values (?,?,?,?,?,?,?,?,?)"; try {
PreparedStatement pr = connect.prepareStatement(sql); pr.setString(1, userBean.getHutype());
pr.setString(2, userBean.getHousetype());
pr.setString(3, userBean.getArea());
pr.setString(4, userBean.getNum());
pr.setString(5, userBean.getName());
pr.setString(6, userBean.getId());
pr.setString(7, userBean.getSex());
pr.setString(8, userBean.getNation());
pr.setString(9, userBean.getEducation()); pr.execute();
} catch (Exception e) {
e.printStackTrace();
} finally {
Con_CloseSql.closeConnection(connect);
} }

  //通过name删除该行
public void deleteUser(UserBean userBean) {
Connection connect = new Con_CloseSql().getConnect(); String sql = "delete from 表名 where name=? "; try {
PreparedStatement pr = connect.prepareStatement(sql);
pr.setString(1, userBean.getName()); pr.executeUpdate();
} catch (SQLException throwables) {
throwables.printStackTrace();
} }


  //查询数据库中消息并从前端输出表格
public List<UserBean> query() {
Connection connect = new Con_CloseSql().getConnect();
String sql = "select * from 表名";
List<UserBean> userBeans = new ArrayList<>();
try {
try (PreparedStatement ps = connect.prepareStatement(sql)) { ResultSet resultSet = ps.executeQuery(sql); UserBean userBean = null;
while (resultSet.next()) {
String hutype = resultSet.getString("...");
String housetype = resultSet.getString("...");
String area = resultSet.getString("...");
//表头关键字
userBean = new UserBean(..., ..., ...,...);//表中元素
userBeans.add(userBean);
} } } catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
Con_CloseSql.closeConnection(connect);
}
return userBeans;
}

  //通过名字来展示信息
public UserBean queryByName(String name) {
Connection connect = new Con_CloseSql().getConnect();
String sql = "select * from census where 户主姓名 = '"+name+"' ";
UserBean userBean = null;
//Object[] params = {name}; try {
try (PreparedStatement ps = connect.prepareStatement(sql)) { ResultSet resultSet = ps.executeQuery(sql); if (resultSet.next()) {
String hutype = resultSet.getString("户别");
String housetype = resultSet.getString("住房类型");
String area = resultSet.getString("本户现住房面积");
String num = resultSet.getString("本户现住房间数");
String name1 = resultSet.getString("户主姓名");
String id = resultSet.getString("身份证号码");
String sex = resultSet.getString("性别");
String nation = resultSet.getString("民族");
String education = resultSet.getString("受教育程度");
userBean = new UserBean(hutype, housetype, area, num, name1, id, sex, nation, education); } } } catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
Con_CloseSql.closeConnection(connect);
}
return userBean;
}   //通过名字更新其他信息
public void upDate(UserBean user){
Connection connect = new Con_CloseSql().getConnect();
String sql="update census set 身份证号码=?,性别=?,民族=?,受教育程度=? where 户主姓名=?";
try {
PreparedStatement ps = connect.prepareStatement(sql);
ps.setString(1, user.getId());
ps.setString(2, user.getSex());
ps.setString(3,user.getNation());
ps.setString(4,user.getEducation());
ps.setString(5,user.getName()); int i= ps.executeUpdate(); } catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
Con_CloseSql.closeConnection(connect);
} }


  //判断是否为该用户
public boolean isUser(String name) {
Connection connect = new Con_CloseSql().getConnect(); try { String sql = "select * from census where 户主姓名 = '" + name + "'"; // 执行查询语句,并把结果集返回给ResultSet
PreparedStatement pr = connect.prepareStatement(sql);
ResultSet rs = pr.executeQuery();
if (rs.next())
return true;
else
return false; } catch (SQLException e) {
// TODO Auto-generated catch block
return false;
}
} public ArrayList<String> findDate() {
Connection conn = new Con_CloseSql().getConnect();
String sql = "select * from census";
PreparedStatement pr; try {
pr = (PreparedStatement)conn.prepareStatement(sql);
ResultSet rs = pr.executeQuery();
int col = rs.getMetaData().getColumnCount();
ArrayList<String> m = new ArrayList<String>();
int n = 0;
while (rs.next()) {
for (int i = 1; i <= col; i++) {
m.add(rs.getString(i) + "<br>");
System.out.print(rs.getString(i) + "\t");
if ((i == 2) && (rs.getString(i).length() < 8)) {
m.add("<br>");
}
}
System.out.println("");
}
return m;
} catch (SQLException e) {
e.printStackTrace();
} return null;
} }

Service包主要包括各种servlet

XXXServlet类:

package service;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException; public class XXXServlet extends HttpServlet { @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;utf-8"); } @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}

pom.xml常用配置为:

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency> <!-- https://mvnrepository.com/artifact/taglibs/standard -->
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>

web.xml为:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0"
metadata-complete="true">
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list> </web-app>

jsp基础配置为:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Title</title>
</head>
<body> </body>
</html>

一个简单的javaweb项目模板的更多相关文章

  1. 搭建Vue.js环境,建立一个简单的Vue项目

    基于vue-cli快速构建 Vue是近年来比较火的一个前端框架,所以搭建Vue.js环境,要装webpack,vue-cli,Vue 安装webpack命令如下 $ cnpm install webp ...

  2. Django入门第一步:构建一个简单的Django项目

    Django入门第一步:构建一个简单的Django项目 1.简介 Django是一个功能完备的Python Web框架,可用于构建复杂的Web应用程序.在本文中,将通过示例跳入并学习Django.您将 ...

  3. 普通 Javaweb项目模板的搭建

    普通 Javaweb项目模板的搭建 1. 创建一个web项目模板的maven项目 2.配置 Tomcat 服务器 3.先测试一下该空项目 4.注入 maven 依赖 5.创建项目的包结构 6.编写基础 ...

  4. 一个简单的JUnit项目

    本人一直很喜欢JAVA,可是真正接触到JUnit也不过半年.由于公司进行网页测试,采用的是 JUnit+selenium的方式搭建的测试框架,然后采用JAVA语言编写,所以本人也好好研究了一下JUni ...

  5. 手把手搭建一个完整的javaweb项目

    手把手搭建一个完整的javaweb项目 本案例使用Servlet+jsp制作,用MyEclipse和Mysql数据库进行搭建,详细介绍了搭建过程及知识点. 下载地址:http://download.c ...

  6. 通过myclipse建立一个简单的Hibernate项目(PS:在单元测试中实现数据的向表的插入)

    Hibernate的主要功能及用法: Ⅰ.Hibernate封装了JDBC,使Java程序员能够以面向对象的思想对数据库进行操作 Ⅱ.Hibernate可以应用于EJB的J2EE架构,完成数据的持久化 ...

  7. (一)使用IDEA新建一个最简单的JavaWeb项目,Maven管理

    1.项目环境 IDEA:2016.2 JDK:1.8.0_76 Maven:3.2.5 2.File-->New-->Project-->Maven 3.选择Project SDK: ...

  8. 使用一个Python脚本来运行一个简单的Django项目

    创建视图 Django是一个模型-模板-视图(model-template-view,MTV)框架. 视图部分通常检查看HTTP给出的请求和查询或者结构,这些信息是发送到表示层的数据. 我们在 hel ...

  9. JAVA WEB快速入门之通过一个简单的Spring项目了解Spring的核心(AOP、IOC)

    接上篇<JAVA WEB快速入门之从编写一个JSP WEB网站了解JSP WEB网站的基本结构.调试.部署>,通过一个简单的JSP WEB网站了解了JAVA WEB相关的知识,比如:Ser ...

随机推荐

  1. software engineer's resume(帮助你写程序员简历)

    关键词 参考 简历模板 参考 下面开始是正文(关键词原文) 介绍 本项目由海外兔 (https://osjobs.net) 维护,海外兔团队由一线互联网面试官组成,提供海内外公司一对一入职套餐以及算法 ...

  2. MFC屏蔽按键ESC、ENTER、Alt+F4

    1.重写 重写下面的函数 virtual BOOL PreTranslateMessage(MSG* pMsg); 2.函数体 BOOL Cfile_trans_codeDlg::PreTransla ...

  3. 【LeetCode】461. Hamming Distance 解题报告(java & python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 Java解法 方法一:异或 + 字符串分割 方法二: ...

  4. 【LeetCode】224. Basic Calculator 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 栈 参考资料 日期 题目地址:https://lee ...

  5. 【LeetCode】940. Distinct Subsequences II 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 动态规划 日期 题目地址:https://leetc ...

  6. idea使用教程-常用快捷键

    [1]创建内容:alt+insert [2]main方法:psvm [3]输出语句:sout [4]复制行:ctrl+d [5]删除行:ctrl+y [6]代码向上/下移动:Ctrl + Shift ...

  7. 使用.NET 6开发TodoList应用(11)——使用FluentValidation和MediatR实现接口请求验证

    系列导航及源代码 使用.NET 6开发TodoList应用文章索引 需求 在响应请求处理的过程中,我们经常需要对请求参数的合法性进行校验,如果参数不合法,将不继续进行业务逻辑的处理.我们当然可以将每个 ...

  8. mysql多条件过滤查询之mysq高级查询

    一.什么是高级查询: ① 多条件的过滤查询 简单说,即拼接sql语句,在sql查询语句之后使用: where 条件1 and/or 条件2 and/or 条件3 - ② 分页查询 二.多条件过滤查询: ...

  9. Ranger架构剖析

    Ranger介绍 2016年,Hadoop迎来了自己十周岁生日.过去的十年,Hadoop雄霸武林盟主之位,号令天下,引领大数据技术生态不断发展壮大,一时间百家争鸣,百花齐放.然而,兄弟多了不好管,为了 ...

  10. 包含全国所有省份、城市、县的一份json文件

    最近做项目时,有个需要全国所有省市信息的数据,于是百度了一下,发现CSDN的很多都需要积分下载,无解!所以自己收集了一份整理了出来. 简单说明一下 1.这是一份json文件,这是因为全国的省市信息一般 ...