深圳企业网站建设服务好,中山优秀网站建设,韶关seo,怎么设计自己的网页创建项目 创建好 项目后, 项目目录分析 数据库设计
我们采用员工表 Employee 与 部门表 Department
部门表 表设计--- 员工表 --表设计 因为有文件上传操作,因此 建立 info表 (其中 员工只能隶属一个部门,因此 两张表之间 有外键关系)
java 代码 设计
数据库建立完毕后,需要…创建项目 创建好 项目后, 项目目录分析 数据库设计
我们采用员工表 Employee 与 部门表 Department
部门表 表设计--- 员工表 --表设计 因为有文件上传操作,因此 建立 info表 (其中 员工只能隶属一个部门,因此 两张表之间 有外键关系)
java 代码 设计
数据库建立完毕后,需要为 每张表添加 3-4条数据
建立 entity 实体层
建立实体层: 注意事项 # 实体层 注意事项类名 --- 与表名 相对应 , java 中规定 类名首字母必须为大写字母属性名 ----- 与 列名 相对应,且 属性类型 与列名对应类型一致,属性名 采用小驼峰命名发, 列名 不区分大小写例如 表中 列 为 stuno 则属性为 stuNo实体类中 必须包含无参数的构造方法 建立mapper层 数据访问层
因为 我们使用的mybatis,因此 包名为mapper 当然也可以为dao
mybatis中 规定 接口与映射文件放在一起,并一一对应, 不仅名称一致,还需要再 xxxMapper.xml 配置 namespace, 指向 对应的接口 ?xml version1.0 encodingUTF-8 ?!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacemapper.EmployeeMapper/mapper
建立service层 业务层 添加Spring 依赖
编写 pom.xml !--spring aop 依赖 jar--!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver --dependencygroupIdorg.aspectj/groupIdartifactIdaspectjweaver/artifactIdversion1.9.7/versionscoperuntime/scope/dependency!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --dependencygroupIdorg.springframework/groupIdartifactIdspring-webmvc/artifactIdversion5.2.9.RELEASE/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-jdbc/artifactIdversion5.2.9.RELEASE/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-core/artifactIdversion5.2.9.RELEASE/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-beans/artifactIdversion5.2.9.RELEASE/version/dependency 添加mybatis 依赖
编写 pom.xml !-- mbatis 分页插件--dependencygroupIdcom.github.pagehelper/groupIdartifactIdpagehelper/artifactIdversion5.2.0/version/dependency!--mybatis-spring 依赖--!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring --dependencygroupIdorg.mybatis/groupIdartifactIdmybatis-spring/artifactIdversion2.0.6/version/dependency!--引入mybatis.jar--dependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.4.6/version/dependency
添加其他一些依赖
添加 mysql 数据库依赖 及 log4j !--mysql--!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.26/version/dependency!--log4j--!-- https://mvnrepository.com/artifact/log4j/log4j --dependencygroupIdlog4j/groupIdartifactIdlog4j/artifactIdversion1.2.17/version/dependency
添加数据源 依赖 !-- https://mvnrepository.com/artifact/com.alibaba/druid --dependencygroupIdcom.alibaba/groupIdartifactIddruid/artifactIdversion1.2.5/version/dependency
jsp 需要引入 jstl !--jstl 依赖 --!-- https://mvnrepository.com/artifact/jstl/jstl --dependencygroupIdjstl/groupIdartifactIdjstl/artifactIdversion1.2/version/dependency
文件上传和下载 !-- https://mvnrepository.com/artifact/commons-io/commons-io --dependencygroupIdcommons-io/groupIdartifactIdcommons-io/artifactIdversion2.6/version/dependency!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload --dependencygroupIdcommons-fileupload/groupIdartifactIdcommons-fileupload/artifactIdversion1.4/version/dependencydependencygroupIdjavax.servlet/groupIdartifactIdservlet-api/artifactIdversion2.5/versionscopeprovided/scope/dependency
为pom.xml 增加 build !--资源--buildresourcesresource!--目录--directorysrc/main/java/directory!--包含--includesincludemapper/**.xml/include/includes/resourceresource!--目录--directorysrc/main/resources/directory!--包含--includesinclude**.*/include/includes/resource/resources/build
编写 数据库配置文件
如果 mysql版本 为 5.0 ,则 driver 应该为 com.mysql.jdbc.Driver 文件名 db.properties# mysql 为8.0 配置uname自己mysql的用户名passwordmysql的密码drivercom.mysql.cj.jdbc.Driverurljdbc:mysql://localhost:3306/数据库名称?serverTimezoneGMT 编写日志配置文件 文件名 log4j.properties### 设置###log4j.rootLogger debug,stdout### 输出信息到控制抬 ###log4j.appender.stdout org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target System.outlog4j.appender.stdout.layout org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n 编写spring 配置文件
spring.xml ?xml version1.0 encodingUTF-8?beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxmlns:txhttp://www.springframework.org/schema/txxmlns:aophttp://www.springframework.org/schema/aopxsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-3.0.xsd!--spring 加载 db.properties --context:property-placeholder locationclasspath:db.properties/!-- 第一步 spring 管理 数据源 (以前mybatis自己管理) --bean idds classcom.alibaba.druid.pool.DruidDataSource property namedriverClassName value${driver}/property nameurl value${url}/property nameusername value${uname}/property namepassword value${password}//bean!-- 第二步 将mybatis中 SqlSessionFactory 交由 spring--bean idsqlSessionFactory classorg.mybatis.spring.SqlSessionFactoryBean!--配置数据源属性--property namedataSource refds/!-- 单独写了 mybatis的配置文件 , 使用以下方式引入 --property nameconfigLocation valueclasspath:mybatis.xml/!-- 配置 mybatis 中的 别名 --property nametypeAliasesPackage valueentity/!--配置 mybatis 中的 映射器--property namemapperLocations valueclasspath:mapper/*.xml/!--配置分页mybati 插件--property namepluginsarraybean classcom.github.pagehelper.PageInterceptorproperty nameproperties!--使用下面的方式配置参数一行配置一个 --valuehelperDialectmysqlreasonabletrue/value/property/bean/array/property/bean!--第三步 配置 mapper 的扫描--bean classorg.mybatis.spring.mapper.MapperScannerConfigurer!--配置 sqlSessionFactoryBeanName --property namesqlSessionFactoryBeanName valuesqlSessionFactory/!-- 配置 扫描 mapper--property namebasePackage valuemapper//bean!--扫描 service 包 , 因为 我们会对 service 做 事务管理--context:component-scan base-packageservice/!-- 配置 文件 上传 需要 解析器--bean idmultipartResolver classorg.springframework.web.multipart.commons.CommonsMultipartResolver!--设置 最大上传 为10M --property namemaxUploadSize value10240000000 /!--默认编码为 utf-8 处理中文--property namedefaultEncoding valueutf-8//bean!--配置 事务 --bean idtransactionManager classorg.springframework.jdbc.datasource.DataSourceTransactionManager!--配置数据源--property namedataSource refds//bean!-- 使用 tx 之前 先 引入 命名空间 tx--tx:advice idtxAdvice transaction-managertransactionManagertx:attributestx:method nameinsert* propagationREQUIRED/tx:method namesave* propagationREQUIRED/tx:method namecreate* propagationREQUIRED/tx:method nameadd* propagationREQUIRED/tx:method nameupdate* propagationREQUIRED/tx:method namedelete* propagationREQUIRED/tx:method namedel* propagationREQUIRED/tx:method nameselect* propagationSUPPORTS read-onlytrue/tx:method namefind* propagationSUPPORTS read-onlytrue/tx:method namesearch* propagationSUPPORTS read-onlytrue/tx:method namequery* propagationSUPPORTS read-onlytrue//tx:attributes/tx:advice!--定义切面, 应用 通知--aop:configaop:advisor advice-reftxAdvicepointcutexecution(* service.*.*(..))//aop:config/beans
编写 springmvc 配置文件
springmvc.xml ?xml version1.0 encodingUTF-8?beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxmlns:mvchttp://www.springframework.org/schema/mvcxsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd!--扫描 controller 包 --context:component-scan base-packagecontroller/!--配置 视图 解析器--bean classorg.springframework.web.servlet.view.InternalResourceViewResolver!--前缀--property nameprefix value/WEB-INF//!--后缀--property namesuffix value.jsp//beanmvc:annotation-driven//beans 编写mybatis配置文件
如果 mybatis 里面什么也 没有,可以 不配置改文件 ?xml version1.0 encodingUTF-8 ?!DOCTYPE configurationPUBLIC -//mybatis.org//DTD Config 3.0//ENhttp://mybatis.org/dtd/mybatis-3-config.dtdconfigurationsettings!--增加 日志的输出 这样 控制台 就可以看到 sql--setting namelogImpl valueLOG4J//settings/configuration 编写web.xml 文件 ?xml version1.0 encodingUTF-8?web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsdversion4.0 metadata-completefalsedisplay-nameArchetype Created Web Application/display-name!-- 加载 spring 配置文件 --context-paramparam-namecontextConfigLocation/param-nameparam-valueclasspath:spring.xml/param-value/context-param!-- 监听器 --listenerlistener-classorg.springframework.web.context.ContextLoaderListener/listener-class/listener!--过滤器 处理中文--filterfilter-nameencodingFilter/filter-namefilter-classorg.springframework.web.filter.CharacterEncodingFilter/filter-classinit-paramparam-nameencoding/param-nameparam-valueutf-8/param-value/init-param/filterfilter-mappingfilter-nameencodingFilter/filter-nameurl-pattern/*/url-pattern/filter-mapping!-- 配置 springmvc的 DispatcherServlet--servletservlet-namespringmvc/servlet-nameservlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-class!--配置 初始化 参数 ,自动加载 springmvc.xml--init-paramparam-namecontextConfigLocation/param-nameparam-valueclasspath:springmvc.xml/param-value/init-param/servletservlet-mappingservlet-namespringmvc/servlet-nameurl-pattern//url-pattern/servlet-mapping/web-app
编写需求功能(这里以部门为例)
分页查询
编写mapper 接口 DepartmentMapper.java javaListDepartment findAll();
编写mapper的xml 文件DepartmentMapper.xml select idfindAll resultTypedepartment select * from department/select
编写 service及实现类
DepService.java ListDepartment findAll();
DepServiceImpl.java Servicepublic class DepServiceImpl implements DepService {Autowiredprivate DepartmentMapper departmentMapper;Overridepublic ListDepartment findAll() {return departmentMapper.findAll();}}
编写 controller Controllerpublic class DepController {Autowiredprivate DepService depService;private final int PAGESIZE3; // 定义 每页显示的 条数/*** 分页查询* return*/RequestMapping(/page)public String pageList(int current,Model model){//判断页码if(current0){current 1; // 从第一页开始}// 分页处理PageHelper.startPage(current,PAGESIZE);// 获得全部数据ListDepartment list depService.searchInfo();// 创建 PageInfo 对象PageInfoDepartment pageInfo new PageInfo(list);// 将 数据返回到 jspmodel.addAttribute(pageInfo,pageInfo);return listPage;}}
编写jsp页面
任意jsp页面 a href/page?current1 点我 分页查询 部门信息/a
listPage.jsp % page contentTypetext/html;charsetUTF-8 languagejava isELIgnoredfalse %%taglib prefixc urihttp://java.sun.com/jsp/jstl/core %htmlheadtitle部门列表----分页查询/title/headbodyh2部门名称 部门主管 /h2ulc:if test${pageInfo.list !null pageInfo.list.size()0 }c:forEach items${pageInfo.list} vardep li${dep.depName} - ${dep.depEmpName}/li/c:forEach/c:if/uldivc:if test${pageInfo.isFirstPage}%-- a hrefjavascript:void(0) disableddisabled 上一页/a--%button disabled 上一页/button/c:ifc:if test${! pageInfo.isFirstPage}%-- a href/page?current${pageInfo.pageNum-1}上一页/a--%button onclickwindow.location.href/page?current${pageInfo.pageNum-1} 上一页/button/c:ifc:if test${pageInfo.isLastPage}%-- a hrefjavascript:void(0) disableddisabled 下一页/a--%button disabled 下一页/button/c:ifc:if test${! pageInfo.isLastPage}%-- a href/page?current${pageInfo.pageNum1}下一页/a--%button onclickwindow.location.href/page?current${pageInfo.pageNum1} 下一页/button/c:if共${pageInfo.pages} 页 ,当前是 第${pageInfo.pageNum}页/div/body/html