• 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. 1018 - Brush (IV)

    1018 - Brush (IV)    PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB Muba ...

  2. 1370 - Bi-shoe and Phi-shoe

    1370 - Bi-shoe and Phi-shoe   PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 3 ...

  3. 【因果推断经典论文】Direct and Indirect Effects - Judea Pearl

    Direct and Indirect Effects Author: Judea Pearl UAI 2001 加州大学洛杉矶分校 论文链接:https://dl.acm.org/doi/pdf/1 ...

  4. HDU 4355:Party All the Time(三分模板)

    Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s) ...

  5. On the Optimization of Deep Networks: Implicit Acceleration by Overparameterization

    目录 引 主要内容 定理1 Claim 1 Claim 2 定理2 证明 定理1的证明 Claim 1 的证明 Kronecker product (克罗内克积) Theorem 2 的证明 代码 A ...

  6. <数据结构>XDOJ.322关键路径长度

    问题与解答 问题描述 计算AOE-网中关键路径的长度. 输入格式 输入数据第一行是一个正整数,表示图中的顶点个数n(顶点将分别按0,1,-,n-1进行编号),顶点数不超过100,其中0为源点,n-1为 ...

  7. Java基础寒假作业-简易计算器

    需求: 使用Java编写计算器的控制台程序,完成简单的加减乘除运算.实现以下功能: 1.运算选择 请用户选择一个算法(1.加法 2.减法 3.乘法 4.除法 5.关闭计算器) 2.计算 a)加法:实现 ...

  8. windows下的Python的下载与安装

    Python的下载 Python下载要去官网下载,xdm,这里是网址 www.python.org 因为是外网所以打开下载会慢一些(不要着急的说) 这是python官网界面,跟着图片去下载(因为我这会 ...

  9. 发布 vscode 插件 Cnblogs Client For VSCode 预览版

    为了方便大家使用 vscode 发布博文,我们做了一个小插件,今天发布预览版,欢迎大家试用并反馈问题与建议. 插件的英文名称是 Cnblogs Client For VSCode,简称是 vscode ...

  10. Nginx_配置文件nginx.conf配置详解

    user nginx nginx ; # Nginx用户及组:用户 组.window下不指定 worker_processes 8; # 工作进程:数目.根据硬件调整,通常等于CPU数量或者2倍于CP ...