# Java Web教学项目
**Repository Path**: yuyaoting/javaweb_teaching_project
## Basic Information
- **Project Name**: Java Web教学项目
- **Description**: 该项目是基于MVC的Java Web基础教学项目,不涉及前端内容。
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 56
- **Created**: 2018-09-14
- **Last Updated**: 2022-05-24
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Java Web教学项目
#——基于MVC的博客网站设计与实现
该项目是基于MVC的Java Web基础教学项目,不涉及前端内容。相关的前端内容请访问同账号的其他项目。
该项目为至少要运行在JDK1.8环境中,建议运行在JDK 9或JDK 10中;服务器建议使用tomcat 9或Jetty 12版本。
## 软件架构
最基础的MVC模式:JSP+Servlet+JavaBean结构
使用JSTL/EL、原生AJAX等技术。
## 前置任务列表
完成该项目需要一些首先完成一些前置任务。在掌握前置任务之后,才能完成该项目
### 1,构建基于maven的项目
构建基于maven的web项目,第三方jar包依赖于中央仓库。
配置maven\conf\settiong.xml文件
修改本地仓库的地址;新增镜像仓库地址
```
E:\yuhf\.m2\repository
```
```xml
alimaven
central
aliyun maven
http://maven.aliyun.com/nexus/content/repositories/central/
```
配置pom.xml文件
```xml
4.0.0
edu.yuhf
blogServer
0.0.1-SNAPSHOT
org.apache.maven.plugins
maven-war-plugin
3.1.0
false
org.apache.maven.plugins
maven-compiler-plugin
1.8
1.8
org.apache.maven.plugins
maven-war-plugin
src/main/webapp
true
WEB-INF
org.eclipse.jetty
jetty-maven-plugin
9.4.5.v20170502
10
9000
/
src/test/resources/webdefault.xml
javax.servlet
javax.servlet-api
3.1.0
provided
jstl
jstl
1.2
javax.servlet.jsp
javax.servlet.jsp-api
2.2.1
provided
junit
junit
4.12
test
log4j
log4j
1.2.17
commons-fileupload
commons-fileupload
1.2.2
com.oracle
ojdbc6
12.1.0
com.alibaba
fastjson
1.2.49
war
```
### 2,利用Git控制项目版本
学会使用Git软件的用法,并确定远程仓库。本文建议使用码云。
## 项目细分任务列表
### 1,登录流程
创建不带数据库验证的用户登录流程。熟悉web开发中的基于MVC设计模式的开发流程。
注意,登录流程实际上包含两个相互独立的流程。
index.jsp-->init.servlet-->login.jsp 流程1
login.jsp-->user.servlet-->login.jsp或veiws/main.jsp 流程2
### 2,登录流程附加功能
在用户登录流程中,加入session验证、cookie校验功能。
### 3,设计数据库
使用PowerDesigner软件设计数据库的物理模型。基本参照如下:
1,用户信息管理模块:用户表、用户详情表、行政区划表、爱好表
2,文章信息管理模块:文章分类表、文章信息表
3,用户权限管理模:角色表、权限表、用户角色表、角色权限表
要求完成基本的设计工作,生成pdm文件。
### 4,表空间、表的创建工作
完成数据库的创建,创建nnblog表空间,创建nnblog用户并授权,创建users表,并添加部分数据。
以上创建工作全部手写完成,源代码文件放入项目文件中。
### 5,数据访问工具类
创建如下:java文件,完成数据库访问代码封装和优化,实现数据库连接信息软编码。
完成对一般的数据库操作(CRUD)的封装。可以返回实体类实例。
DBConnection.java
```java
static{}
public Connection getConnection();
public void closeConnection(Connection connection);
```
JdbcTemplate.java
```java
public List query(String sql,ResultSetHandle rsh,Object...param);
public int queryForCount(String sql,Object...param);
public int update(String sql,Object...param);
```
ResultSetHandler.java --接口
TransactionManager.java
jdbc.properties
要求:引入log4j日志系统
### 6,登录流程_增强
加入service(业务部分)、dao(数据访问部分)及任务4中的数据库访问工具类。
service、dao都必须基于接口、且进行专门的单元测试。
```java
UserService
UserServiceImpl
UserDao
UserJdbcDaoImpl
UserServiceImplTest
UserJdbcDaoImplTest
```
### 7,数据库表的创建工作
创建相应的数据库表,包括:用户详情表、爱好信息表、行政区划表
### 8,完成注册任务流程
注册任务细化:
1,编写用户注册页面,主要注册信息包括:用户名、密码、性别、爱好、来自于和Email。
2,在登录页面点击注册按钮,通过user.servlet?param=register转向注册页面。
3,在servlet中收集所需要的信息,包括:爱好信息,来自于的省级信息等。
4,在register.jsp页面中显示相关信息。
5,在省级下拉列表变化时,市级下拉列表显示相对应的信息。(利用ajax完成)
6,提交form表单到服务器端
7,服务端根据提交信息写入数据库,完成用户注册。
### 9,创建文章相关的数据库表
文章信息表、文章分类表。
### 10,构建基本的主页页面。
基于Grid,构建主页页面
### 11,用户信息管理页面(关键页面)
完成用户信息管理页面的开发任务
#### 管理页面的任务细化
1,构建基础页面,显示用户信息。用户信息从users表、userDetail表及NativePlace表中获取。还要在Hobby表通过业务代码进行相应的转换处理。
利用List