简单使用Idea创建三层架构项目和数据库连接(使用原生ajax进行访问+ajax)
Idea创建三层架构项目
首先创建一个Web项目model

创建Web完成后进行创建entity、dao、service



特别注意

根据上面的步骤进行创建即可得到

创建完成
我们首先创建数据库
create database therr_layer
go
use therr_layer
go
create table test(
tid int identity(1,1),
tname varchar(20)
)
go
insert into test values
('dao'),
('entity'),
('service')
go
select * from test

现在我们进行在实体层(entity)创建类

创建完成后,进行创建字段和方法

package com.wbg;
public class test {
int tid;
String tname;
public test() {
}
public int getTid() {
return tid;
}
@Override
public String toString() {
return "test{" +
"tid=" + tid +
", tname='" + tname + '\'' +
'}';
}
public void setTid(int tid) {
this.tid = tid;
}
public String getTname() {
return tname;
}
public void setTname(String tname) {
this.tname = tname;
}
public test(int tid, String tname) {
this.tid = tid;
this.tname = tname;
}
}
创建完成后,现在先配置依赖关系
数据访问(dao)模块需要依赖实体层(entity)
服务(service)模块需要依赖数据访问层(dao)
model需要依赖服务层(service)
右键->F4->Modules
如图进行配置






现在进行配置数据库驱动

配置后进行创建数据访问层(dao)

package com.wbg; import java.sql.*;
import java.util.ArrayList;
import java.util.List; public class testDao {
public static void main(String[] args) {
testDao d=new testDao();
List<test> list=d.select();
for(test t:list){
System.out.println(t);
}
} public List<test> select() {
Connection con=null;
List<test> list=new ArrayList<test>();
test te=null;
//加载驱动
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con= DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databasename=therr_layer","sa","123456");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
String sql="select * from test";
Statement stat=null;
ResultSet rs=null;
try {
stat= con.createStatement();
rs=stat.executeQuery(sql);
while (rs.next()){
te=new test(rs.getInt("tid"),rs.getString("tname"));
list.add(te);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
if(!rs.isClosed())
rs.close();
if(!con.isClosed())
con.close();
if(!stat.isClosed())
stat.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return list;
}
}
测试完成,现在创建服务层

package com.wbg;
import java.util.List;
public class testService {
public String select(){
String data="{\"data\":[";
String fh="";
testDao d=new testDao();
List<test> list=d.select();
for(test t:list){
data+=fh+"{\"tid\":\""+t.getTid()+"\",\"tname\":\"\"+t.getTname()+\"\"}";
fh=",";
}
data+="]}";
return data;
}
public static void main(String[] args) {
testService t=new testService();
System.out.println(t.select());
}
}
测试完成,现在进入我们的项目model层创建后台Servlet

创建完成后发现报错,原因没有引入




已经解决
如果根据上面的图没有解决,看下Intellij idea创建(包、文件)javaWeb以及Servlet简单实现(Tomcat):https://www.cnblogs.com/weibanggang/p/9439938.html
进行写注释@Webservlet

package com.wbg; import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet("/testservlet")
public class testservlet extends javax.servlet.http.HttpServlet {
protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
testService t=new testService();
response.getWriter().print(t.select());;
} protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
doPost(request,response);
}
}
现在使用Tomect进行启动
如果不知道Tomect,看下Intellij idea创建(包、文件)javaWeb以及Servlet简单实现(Tomcat):https://www.cnblogs.com/weibanggang/p/9439938.html

jsp代码
<%--
Created by IntelliJ IDEA.
User: 邦杠
Date: 2018/8/11
Time: 20:59
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
<style>
table ,th,td{border:1px solid red;border-collapse:collapse}
table{margin: auto;margin-bottom: 20px;}
</style>
</head>
<body>
<input type="button" value="get查看" onclick="getsele()"/>
<input type="button" value="post查看" onclick="postselect()"/>
<input type="button" value="ajax查看" onclick="ajaxsele()"/>
<table id="tab1">
<caption>get</caption>
<th>tid</th><th>tname</th>
</table>
<table id="tab2">
<caption>post</caption>
<th>tid</th><th>tname</th>
</table>
<table id="tab3">
<caption>ajax</caption>
<th>tid</th><th>tname</th>
</table>
<script src="js/jquery.js"></script>
<script>
function getsele(){
console.log("进入了getsele");
//创建对象XMLHttpRequest
var ajax=new XMLHttpRequest();
//创建http请求,设置请求地址
ajax.open("get","testservlet.do");
//发送请求 (get为null post为参数)
ajax.send(null);
//给ajax设置事件(这里最多感知4[1-4]个状态)
ajax.onreadystatechange = function(){
//5.获取响应
//responseText 以字符串的形式接收服务器返回的信息
//console.log(ajax.readyState);
if(ajax.readyState == 4 && ajax.status == 200){
//使用JSON.parse方法将json字符串解析称为json对象
var data = JSON.parse(ajax.responseText);
//使用eval方法将json字符串解析成为json对象
//var data=eval("("+ajax.responseText+")");
var tab=document.getElementById("tab1");
for(var i=0;i<data.data.length;i++){
var tr=document.createElement("tr");
var tdtid=document.createElement("td");
var tdtname=document.createElement("td");
var tid=document.createTextNode(data.data[i].tid);
var tname=document.createTextNode(data.data[i].tname);
tdtid.appendChild(tid);
tdtname.appendChild(tname);
tr.appendChild(tdtid);
tr.appendChild(tdtname);
tab.append(tr);
}
}
} }
function postselect(){
console.log("进入了postselect");
//创建对象
var ajax=new XMLHttpRequest();
//创建请求路径
ajax.open("post","testservlet.do");
//post方式传递数据是模仿form表单传递给服务器的,要设置header头协议
ajax.setRequestHeader("content-type","application/x-www-form-urlencoded");
//post在这里传参数 这里我们没有参数
ajax.send("null");
//给ajax设置事件(这里最多感知4[1-4]个状态)
ajax.onreadystatechange = function() {
//5.获取响应
//responseText 以字符串的形式接收服务器返回的信息
//console.log(ajax.readyState);
if (ajax.readyState == 4 && ajax.status == 200) {
//使用JSON.parse方法将json字符串解析称为json对象
var data = JSON.parse(ajax.responseText);
//使用eval方法将json字符串解析成为json对象
//var data=eval("("+ajax.responseText+")");
var tab = document.getElementById("tab2");
for (var i = 0; i < data.data.length; i++) {
var tr = document.createElement("tr");
var tdtid = document.createElement("td");
var tdtname = document.createElement("td");
var tid = document.createTextNode(data.data[i].tid);
var tname = document.createTextNode(data.data[i].tname);
tdtid.appendChild(tid);
tdtname.appendChild(tname);
tr.appendChild(tdtid);
tr.appendChild(tdtname);
tab.append(tr);
}
}
}
} function ajaxsele(){
//使用jq中的ajax进行请求
console.log("进入了ajax");
$.ajax({
type:"get",
url:"testservlet.do",
dataType:"json",
success:function (data) {
var tab= $("#tab3");
$.each(data.data,function (index,da) {
var tr=$("<tr/>");
var td1=$("<td/>").html(da.tid).appendTo(tr);
var td2=$("<td/>").html(da.tname).appendTo(tr);
tab.append(tr);
})
}
})
var tab=$("tab3"); }
</script>
</body>
</html>
运行结果:

项目地址:https://github.com/weibanggang/Three_layer
简单使用Idea创建三层架构项目和数据库连接(使用原生ajax进行访问+ajax)的更多相关文章
- ASP.NET三层架构项目创建流程
1.进入VS2010,新建项目—>Visual C#—>Web—>ASP.NET空Web应用程序,如图所示: 2.在解决方案处右击—>新建项目—>Windows—> ...
- 使用VS创建三层架构的项目
使用VS创建三层架构的项目 1.打开VS软件: 2.创建新项目: 3.创建新项目打开后选择SAP的选项点击创建{注:上面还有一个和这个相似的项目创建:看清楚在选择: 4.创建后改下名字,框架如果不是3 ...
- 用VS2010创建三层架构开发模式及三层架构的研究
三层架构的研究 三层体系结构的概念 用户界面表示层(USL) 业务逻辑层(BLL) 数据访问层(DAL) BLL将USL与DAL隔开了,并且加入了业务规则 各层的作用 1:数据数据访问层:主要是对 ...
- ASP.NET创建三层架构图解详细教程
1.新建项目 2.创建Visual Studio解决方案 3.再创建项目 4.选择类库类型 5.依次创建bll(业务逻辑层),dal(数据访问层)和model(模型层也可以叫实体层) 6.添加一个网站 ...
- .NETCore+EF+MySql+Autofac简单三层架构
前言 其实就是一个简单依赖注入的三层架构.记录一下,大佬们就不用看下去了.重点在最后面,可以直接拖到底去看. 正文 1.贴代码 1.整体的一个结构.大佬们应该一眼就看明白了. 2.MySqlConte ...
- 浅谈C++三层架构
浅谈C++三层架构 三层架构并不是MVC,MVC是一个很早就有的经典的程序设计模式,M-V-C分为三层,M(Model)-V(View)-C(Control). web开发中的三层架构是指:数据访问层 ...
- 如何使用ABP进行软件开发(2) 领域驱动设计和三层架构的对比
简述 上一篇简述了ABP框架中的一些基础理论,包括ABP前后端项目的分层结构,以及后端项目中涉及到的知识点,例如DTO,应用服务层,整洁架构,领域对象(如实体,聚合,值对象)等. 笔者也曾经提到,AB ...
- 基于三层架构下的公共数据访问方法(Sqlite数据库)
作者总结了一下,使用Winform的三层架构做窗体应用程序,在数据访问方面,有用到纯sql语句方法.参数方法.存储过程方法. 那么什么是三层架构呢? UI---存放Form窗体---(用户所关心的) ...
- C#三层架构
C#三层架构 三层架构分为:表现层(UI(User Interface)).业务逻辑层(BLL(Business Logic Layer)).数据访问层(DAL(Data Access Layer)) ...
随机推荐
- Tomcat服务器安装
Tomcat服务器类似于XAMPP,主要安装步骤如下. 第一步: 安装JDK. 第二步: 安装tomcat. 第三步: 启动tomcat下bin下的startup.bat即可启动tomcat. 可能出 ...
- react native 完美解决启动白屏
先讲下我的RN版本0.58.5 首先安装react-native-splash-screen(目前使用的版本是3.2.0) 项目地址https://github.com/crazycodeboy/re ...
- js event鼠标事件
1,鼠标焦点事件 <!DOCTYPE html><html lang="en"><head> <meta charset="UT ...
- 关于微信小程序的动态跳转
最近在研究微信小程序.在做一个简单的购物小程序时,遇到一个问题:如何通过扫码实现动态的跳转页面功能, 通过研究终于找到了解决方法: 首先当然要实现扫码解析功能js的代码: click: functio ...
- MySql存储引擎MyISAM和InnoDB的区别
1.MySQL默认采用的是MyISAM. 2.MyISAM不支持事务,而InnoDB支持.InnoDB的AUTOCOMMIT默认是打开的,即每条SQL语句会默认被封装成一个事务,自动提交,这样会影响速 ...
- C#语言-02.数据类型
a. 数据类型 i. 值类型:是一种由类型的实际值表示的数据类型,存储在栈内的存储空间中,由于编译器编译后将源代码中的值类型变量直接对应到唯一的存储空间上,直接访问该存储空间,故值类型的数据具有较快地 ...
- c# 文件名排序
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.C ...
- idea 正则全局替换文件文本
上一遍写到了log4j2分层输出日志的内容,但因为项目原先采用的log4j,现使用log4j2,需将原有log4j的代码进行替换,以前的代码类似如下: private static final Log ...
- Csharp: TreeView 初始化设置默认选择节点
/// <summary> /// 设置查找的节点为选定节点 /// 涂聚文 /// 2013-07-15 /// </summary> /// <param name= ...
- <Android 基础(十八)> XLIFF
介绍 XLIFF ,XML Localization Interchange File Format,XML本地化数据交换格式. 实际使用 1.布局文件 activity_main.xml <? ...