• 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. cmake配置项目引用动态库

    note 本文将介绍使用FIND_PACKAGE配置项目动态库的方法 cmake version: 3.18 platform: win10 20H2 概述 创建了一个动态库,再由主项目调用该动态库. ...

  2. 【LeetCode】495. Teemo Attacking 解题报告(Python & C++)

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

  3. 【LeetCode】468. Validate IP Address 解题报告(Python)

    [LeetCode]468. Validate IP Address 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: h ...

  4. 【嵌入式AI】全志 XR806 say hello world

      欢迎关注我的公众号 [极智视界],回复001获取Google编程规范   O_o   >_<   o_O   O_o   ~_~   o_O   大家好,我是极智视界,本文介绍了全志 ...

  5. Codeforces 888C: K-Dominant Character(水题)

    You are given a string s consisting of lowercase Latin letters. Character c is called k-dominant iff ...

  6. LTD: Low Temperature Distillation for Robust Adversarial Training

    目录 概 主要内容 Chen E. and Lee C. LTD: Low temperature distillation for robust adversarial training. arXi ...

  7. pycharm遇到的小问题

    1. Pycharm编写的代码出现满屏的波浪线,如何去除>>>点击右下角的小人图标将箭头移到中间syntax处即可. 2. 运行时报错: UserWarning: No parser ...

  8. 记录一次乱码问题修复经历!排查修复Poi-tl使用HttpServletResponse导出Word乱码问题

    问题 Poi-tl中HttpServletResponse导出Word乱码问题: 文件名使用中文,中文名乱码 导出的文件下载后乱码 原因 文件名中文乱码: 没有设置文件名的编码规则 文件下载乱码: 在 ...

  9. Storm集群安装Version1.0.1开启Kerberos

    Storm集群安装,基于版本1.0.1, 同时开启Kerberos安全认证, 使用apache-storm-1.0.1.tar.gz安装包. 1.安装规划 角色规划 IP/机器名 安装软件 运行进程 ...

  10. nginx rewrite 基础

    一.跳转到首页  如果请求的页面不存在的话就跳转到首页 location / {      if (!-e $request_filename){        rewrite ^/(.*) /ind ...