• 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. 【LeetCode】723. Candy Crush 解题报告 (C++)

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

  2. 【LeetCode】990. Satisfiability of Equality Equations 解题报告(C++ & python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 DFS 并查集 日期 题目地址:https://le ...

  3. 【LeetCode】518. Coin Change 2 解题报告(Python)

    [LeetCode]518. Coin Change 2 解题报告(Python) 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目 ...

  4. 应用程序开发 WebApp NativeApp 微信小程序

    Web    Native App  微信小程序 WebApp是指基于Web的系统和应用,其作用是向广大的最终用户发布一组复杂的内容和功能.webapp 框架是一种简单的与WSGI兼容的网络应用程序框 ...

  5. ELK集中化日志解决方案——看这一篇全搞定

    一.前言 在软件发开技术管理里有两个永恒经典的问题,适合我们初到一家软件企业或一家公司的科技团队,来判断自己该从哪里入手帮助整个团队提升科技水平和产能.问题一是"在我们团队里,只涉及一行代码 ...

  6. CS5213替代AG6200 AG6201|HDMI转VGA带音频输出方案芯片

    台湾安格AG6200 AG6201专门用于设计HDMI转VGA带音频输出的方案芯片,CS5213是一款HDMI to VGA转换器且结合了HDMI输入接口和模拟RGB DAC输出.带支持片上音频数模转 ...

  7. Java Web程序设计笔记 • 【第10章 JSTL标签库】

    全部章节   >>>> 本章目录 10.1 JSTL 概述 10.1.1 JSTL 简介 10.1.1 JSTL 使用 10.1.2 实践练习 10.2 核心标签库 10.2. ...

  8. WPF使用字体图标

    首先我们要有字体文件,可以去阿里巴巴矢量图标库下载,下载解压后可以看到如下文件: 其中,iconfont.ttf就是字体文件,我们将该文件引入到自己的项目中,将iconfont.ttf文件的属性中&q ...

  9. Kafka集群安装Version1.0.1(自带Zookeeper)

    1.说明 Kafka集群安装,基于版本1.0.1, 使用kafka_2.12-1.0.1.tgz安装包, 其中2.12是编译工具Scala的版本. 而且不需要另外安装Zookeeper服务, 使用Ka ...

  10. Shell调试Debug的三种方式

    Shell脚本进行Debug调试的三种方法如下: 1.在调用脚本的时候开启deubg sh -x shell.sh 2.在脚本文件首行开启deubg #!/bin/bash -x 3. 使用set开启 ...