Skip to content

Latest commit

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

使用 SSM 框架构建一个小的 web 项目:

框架封装了很多实现的方法,调用也很方便,省去了大量与业务关的代码,可以让我们更加关注于功能的实现。 在练习中,对使用框架的好处深有体会,代码结构更加清晰,每一层只做一件事。

当浏览器发出请求后,前端控制器 DispatcherServlet 处理请求,在 Controller 类里处理,通过接口,调用 Service 层的方法,再在 Service 层里调用 DAO 层的方法,一层一层通过接口调用。

DispatcherServlet 只做任务的分派, Controller 里处理请求返回视图模型, Service 层做具体业务的处理, DAO 层只对数据库。 前台页面使用JSP,EL表达式来做展示和简单的逻辑处理

Demo的环境: JDK1.7,maven3.5,Spring3.2.16,MyBatis3.2.2, IDE: MyEclipse 数据库: MySQL

构建一个demo的步骤:

  1. 导入 jar 包(如果使用 maven 则是配置 pom.xml)
  2. 配置 web.xml 文件
  3. 配置 spring.xml
  4. 配置 springMVC.xml
  5. 配置 myBatis.xml
  6. 配置资源文件,database.properties,log4j.properties 等等
  7. 设计 pojo 实体类
  8. 编写 DAO 层接口和 Mapper.xml
  9. 编写 service 业务层
  10. 编写 cotroller 控制器
  11. 视图代码:前台 jsp 页面

租房系统功能分析:

  1. 用户注册和登录
  2. 租房信息列表查询显示
  3. 按条件搜索查询(定义一个查询类 HouseQuery)
  4. 分页查询(定义一个分页类 Page)
  5. 查询数据的回显
  6. 不登录用户: 查询
  7. 登录的用户: 查询、 增加、修改、删除信息

数据库中有六张表: tables.png

基本功能效果: house.gif

可扩展功能: 1,用户的管理,管理员可以添加修改删除用户 2,用户权限的控制, 3,可根据用户查询该用户下面的房子信息 等等......

About

No description, website, or topics provided.

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - JasonMHo/house · GitHub
Skip to content

Latest commit

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

使用 SSM 框架构建一个小的 web 项目:

框架封装了很多实现的方法,调用也很方便,省去了大量与业务关的代码,可以让我们更加关注于功能的实现。 在练习中,对使用框架的好处深有体会,代码结构更加清晰,每一层只做一件事。

当浏览器发出请求后,前端控制器 DispatcherServlet 处理请求,在 Controller 类里处理,通过接口,调用 Service 层的方法,再在 Service 层里调用 DAO 层的方法,一层一层通过接口调用。

DispatcherServlet 只做任务的分派, Controller 里处理请求返回视图模型, Service 层做具体业务的处理, DAO 层只对数据库。 前台页面使用JSP,EL表达式来做展示和简单的逻辑处理

Demo的环境: JDK1.7,maven3.5,Spring3.2.16,MyBatis3.2.2, IDE: MyEclipse 数据库: MySQL

构建一个demo的步骤:

  1. 导入 jar 包(如果使用 maven 则是配置 pom.xml)
  2. 配置 web.xml 文件
  3. 配置 spring.xml
  4. 配置 springMVC.xml
  5. 配置 myBatis.xml
  6. 配置资源文件,database.properties,log4j.properties 等等
  7. 设计 pojo 实体类
  8. 编写 DAO 层接口和 Mapper.xml
  9. 编写 service 业务层
  10. 编写 cotroller 控制器
  11. 视图代码:前台 jsp 页面

租房系统功能分析:

  1. 用户注册和登录
  2. 租房信息列表查询显示
  3. 按条件搜索查询(定义一个查询类 HouseQuery)
  4. 分页查询(定义一个分页类 Page)
  5. 查询数据的回显
  6. 不登录用户: 查询
  7. 登录的用户: 查询、 增加、修改、删除信息

数据库中有六张表: tables.png

基本功能效果: house.gif

可扩展功能: 1,用户的管理,管理员可以添加修改删除用户 2,用户权限的控制, 3,可根据用户查询该用户下面的房子信息 等等......

About

No description, website, or topics provided.

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - JasonMHo/house · GitHub
Skip to content

Latest commit

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

使用 SSM 框架构建一个小的 web 项目:

框架封装了很多实现的方法,调用也很方便,省去了大量与业务关的代码,可以让我们更加关注于功能的实现。 在练习中,对使用框架的好处深有体会,代码结构更加清晰,每一层只做一件事。

当浏览器发出请求后,前端控制器 DispatcherServlet 处理请求,在 Controller 类里处理,通过接口,调用 Service 层的方法,再在 Service 层里调用 DAO 层的方法,一层一层通过接口调用。

DispatcherServlet 只做任务的分派, Controller 里处理请求返回视图模型, Service 层做具体业务的处理, DAO 层只对数据库。 前台页面使用JSP,EL表达式来做展示和简单的逻辑处理

Demo的环境: JDK1.7,maven3.5,Spring3.2.16,MyBatis3.2.2, IDE: MyEclipse 数据库: MySQL

构建一个demo的步骤:

  1. 导入 jar 包(如果使用 maven 则是配置 pom.xml)
  2. 配置 web.xml 文件
  3. 配置 spring.xml
  4. 配置 springMVC.xml
  5. 配置 myBatis.xml
  6. 配置资源文件,database.properties,log4j.properties 等等
  7. 设计 pojo 实体类
  8. 编写 DAO 层接口和 Mapper.xml
  9. 编写 service 业务层
  10. 编写 cotroller 控制器
  11. 视图代码:前台 jsp 页面

租房系统功能分析:

  1. 用户注册和登录
  2. 租房信息列表查询显示
  3. 按条件搜索查询(定义一个查询类 HouseQuery)
  4. 分页查询(定义一个分页类 Page)
  5. 查询数据的回显
  6. 不登录用户: 查询
  7. 登录的用户: 查询、 增加、修改、删除信息

数据库中有六张表: tables.png

基本功能效果: house.gif

可扩展功能: 1,用户的管理,管理员可以添加修改删除用户 2,用户权限的控制, 3,可根据用户查询该用户下面的房子信息 等等......

About

No description, website, or topics provided.

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - JasonMHo/house · GitHub
Skip to content

Latest commit

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

使用 SSM 框架构建一个小的 web 项目:

框架封装了很多实现的方法,调用也很方便,省去了大量与业务关的代码,可以让我们更加关注于功能的实现。 在练习中,对使用框架的好处深有体会,代码结构更加清晰,每一层只做一件事。

当浏览器发出请求后,前端控制器 DispatcherServlet 处理请求,在 Controller 类里处理,通过接口,调用 Service 层的方法,再在 Service 层里调用 DAO 层的方法,一层一层通过接口调用。

DispatcherServlet 只做任务的分派, Controller 里处理请求返回视图模型, Service 层做具体业务的处理, DAO 层只对数据库。 前台页面使用JSP,EL表达式来做展示和简单的逻辑处理

Demo的环境: JDK1.7,maven3.5,Spring3.2.16,MyBatis3.2.2, IDE: MyEclipse 数据库: MySQL

构建一个demo的步骤:

  1. 导入 jar 包(如果使用 maven 则是配置 pom.xml)
  2. 配置 web.xml 文件
  3. 配置 spring.xml
  4. 配置 springMVC.xml
  5. 配置 myBatis.xml
  6. 配置资源文件,database.properties,log4j.properties 等等
  7. 设计 pojo 实体类
  8. 编写 DAO 层接口和 Mapper.xml
  9. 编写 service 业务层
  10. 编写 cotroller 控制器
  11. 视图代码:前台 jsp 页面

租房系统功能分析:

  1. 用户注册和登录
  2. 租房信息列表查询显示
  3. 按条件搜索查询(定义一个查询类 HouseQuery)
  4. 分页查询(定义一个分页类 Page)
  5. 查询数据的回显
  6. 不登录用户: 查询
  7. 登录的用户: 查询、 增加、修改、删除信息

数据库中有六张表: tables.png

基本功能效果: house.gif

可扩展功能: 1,用户的管理,管理员可以添加修改删除用户 2,用户权限的控制, 3,可根据用户查询该用户下面的房子信息 等等......

About

No description, website, or topics provided.

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - JasonMHo/house · GitHub
Skip to content

Latest commit

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

使用 SSM 框架构建一个小的 web 项目:

框架封装了很多实现的方法,调用也很方便,省去了大量与业务关的代码,可以让我们更加关注于功能的实现。 在练习中,对使用框架的好处深有体会,代码结构更加清晰,每一层只做一件事。

当浏览器发出请求后,前端控制器 DispatcherServlet 处理请求,在 Controller 类里处理,通过接口,调用 Service 层的方法,再在 Service 层里调用 DAO 层的方法,一层一层通过接口调用。

DispatcherServlet 只做任务的分派, Controller 里处理请求返回视图模型, Service 层做具体业务的处理, DAO 层只对数据库。 前台页面使用JSP,EL表达式来做展示和简单的逻辑处理

Demo的环境: JDK1.7,maven3.5,Spring3.2.16,MyBatis3.2.2, IDE: MyEclipse 数据库: MySQL

构建一个demo的步骤:

  1. 导入 jar 包(如果使用 maven 则是配置 pom.xml)
  2. 配置 web.xml 文件
  3. 配置 spring.xml
  4. 配置 springMVC.xml
  5. 配置 myBatis.xml
  6. 配置资源文件,database.properties,log4j.properties 等等
  7. 设计 pojo 实体类
  8. 编写 DAO 层接口和 Mapper.xml
  9. 编写 service 业务层
  10. 编写 cotroller 控制器
  11. 视图代码:前台 jsp 页面

租房系统功能分析:

  1. 用户注册和登录
  2. 租房信息列表查询显示
  3. 按条件搜索查询(定义一个查询类 HouseQuery)
  4. 分页查询(定义一个分页类 Page)
  5. 查询数据的回显
  6. 不登录用户: 查询
  7. 登录的用户: 查询、 增加、修改、删除信息

数据库中有六张表: tables.png

基本功能效果: house.gif

可扩展功能: 1,用户的管理,管理员可以添加修改删除用户 2,用户权限的控制, 3,可根据用户查询该用户下面的房子信息 等等......

About

No description, website, or topics provided.

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - JasonMHo/house · GitHub
Skip to content

Latest commit

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

使用 SSM 框架构建一个小的 web 项目:

框架封装了很多实现的方法,调用也很方便,省去了大量与业务关的代码,可以让我们更加关注于功能的实现。 在练习中,对使用框架的好处深有体会,代码结构更加清晰,每一层只做一件事。

当浏览器发出请求后,前端控制器 DispatcherServlet 处理请求,在 Controller 类里处理,通过接口,调用 Service 层的方法,再在 Service 层里调用 DAO 层的方法,一层一层通过接口调用。

DispatcherServlet 只做任务的分派, Controller 里处理请求返回视图模型, Service 层做具体业务的处理, DAO 层只对数据库。 前台页面使用JSP,EL表达式来做展示和简单的逻辑处理

Demo的环境: JDK1.7,maven3.5,Spring3.2.16,MyBatis3.2.2, IDE: MyEclipse 数据库: MySQL

构建一个demo的步骤:

  1. 导入 jar 包(如果使用 maven 则是配置 pom.xml)
  2. 配置 web.xml 文件
  3. 配置 spring.xml
  4. 配置 springMVC.xml
  5. 配置 myBatis.xml
  6. 配置资源文件,database.properties,log4j.properties 等等
  7. 设计 pojo 实体类
  8. 编写 DAO 层接口和 Mapper.xml
  9. 编写 service 业务层
  10. 编写 cotroller 控制器
  11. 视图代码:前台 jsp 页面

租房系统功能分析:

  1. 用户注册和登录
  2. 租房信息列表查询显示
  3. 按条件搜索查询(定义一个查询类 HouseQuery)
  4. 分页查询(定义一个分页类 Page)
  5. 查询数据的回显
  6. 不登录用户: 查询
  7. 登录的用户: 查询、 增加、修改、删除信息

数据库中有六张表: tables.png

基本功能效果: house.gif

可扩展功能: 1,用户的管理,管理员可以添加修改删除用户 2,用户权限的控制, 3,可根据用户查询该用户下面的房子信息 等等......

About

No description, website, or topics provided.

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - JasonMHo/house · GitHub
Skip to content

Latest commit

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

使用 SSM 框架构建一个小的 web 项目:

框架封装了很多实现的方法,调用也很方便,省去了大量与业务关的代码,可以让我们更加关注于功能的实现。 在练习中,对使用框架的好处深有体会,代码结构更加清晰,每一层只做一件事。

当浏览器发出请求后,前端控制器 DispatcherServlet 处理请求,在 Controller 类里处理,通过接口,调用 Service 层的方法,再在 Service 层里调用 DAO 层的方法,一层一层通过接口调用。

DispatcherServlet 只做任务的分派, Controller 里处理请求返回视图模型, Service 层做具体业务的处理, DAO 层只对数据库。 前台页面使用JSP,EL表达式来做展示和简单的逻辑处理

Demo的环境: JDK1.7,maven3.5,Spring3.2.16,MyBatis3.2.2, IDE: MyEclipse 数据库: MySQL

构建一个demo的步骤:

  1. 导入 jar 包(如果使用 maven 则是配置 pom.xml)
  2. 配置 web.xml 文件
  3. 配置 spring.xml
  4. 配置 springMVC.xml
  5. 配置 myBatis.xml
  6. 配置资源文件,database.properties,log4j.properties 等等
  7. 设计 pojo 实体类
  8. 编写 DAO 层接口和 Mapper.xml
  9. 编写 service 业务层
  10. 编写 cotroller 控制器
  11. 视图代码:前台 jsp 页面

租房系统功能分析:

  1. 用户注册和登录
  2. 租房信息列表查询显示
  3. 按条件搜索查询(定义一个查询类 HouseQuery)
  4. 分页查询(定义一个分页类 Page)
  5. 查询数据的回显
  6. 不登录用户: 查询
  7. 登录的用户: 查询、 增加、修改、删除信息

数据库中有六张表: tables.png

基本功能效果: house.gif

可扩展功能: 1,用户的管理,管理员可以添加修改删除用户 2,用户权限的控制, 3,可根据用户查询该用户下面的房子信息 等等......

About

No description, website, or topics provided.

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - JasonMHo/house · GitHub
Skip to content

Latest commit

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

使用 SSM 框架构建一个小的 web 项目:

框架封装了很多实现的方法,调用也很方便,省去了大量与业务关的代码,可以让我们更加关注于功能的实现。 在练习中,对使用框架的好处深有体会,代码结构更加清晰,每一层只做一件事。

当浏览器发出请求后,前端控制器 DispatcherServlet 处理请求,在 Controller 类里处理,通过接口,调用 Service 层的方法,再在 Service 层里调用 DAO 层的方法,一层一层通过接口调用。

DispatcherServlet 只做任务的分派, Controller 里处理请求返回视图模型, Service 层做具体业务的处理, DAO 层只对数据库。 前台页面使用JSP,EL表达式来做展示和简单的逻辑处理

Demo的环境: JDK1.7,maven3.5,Spring3.2.16,MyBatis3.2.2, IDE: MyEclipse 数据库: MySQL

构建一个demo的步骤:

  1. 导入 jar 包(如果使用 maven 则是配置 pom.xml)
  2. 配置 web.xml 文件
  3. 配置 spring.xml
  4. 配置 springMVC.xml
  5. 配置 myBatis.xml
  6. 配置资源文件,database.properties,log4j.properties 等等
  7. 设计 pojo 实体类
  8. 编写 DAO 层接口和 Mapper.xml
  9. 编写 service 业务层
  10. 编写 cotroller 控制器
  11. 视图代码:前台 jsp 页面

租房系统功能分析:

  1. 用户注册和登录
  2. 租房信息列表查询显示
  3. 按条件搜索查询(定义一个查询类 HouseQuery)
  4. 分页查询(定义一个分页类 Page)
  5. 查询数据的回显
  6. 不登录用户: 查询
  7. 登录的用户: 查询、 增加、修改、删除信息

数据库中有六张表: tables.png

基本功能效果: house.gif

可扩展功能: 1,用户的管理,管理员可以添加修改删除用户 2,用户权限的控制, 3,可根据用户查询该用户下面的房子信息 等等......

About

No description, website, or topics provided.

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages