java_web [Maven]项目

一. web项目搭建及web服务器

(一) 一般Java项目

java_web [Maven]项目_第1张图片java_web [Maven]项目_第2张图片
java_web [Maven]项目_第3张图片


(二) java_web 项目创建

java_web [Maven]项目_第4张图片

java_web [Maven]项目_第5张图片

java_web [Maven]项目_第6张图片


(三) web服务器

Web服务器:【apacth apacthTomcat weblogic发布项目—最终运行
java_web [Maven]项目_第7张图片

1. 结构剖析:tomcat

java_web [Maven]项目_第8张图片

2. tomcatserver.xml 配置文件x相关的配置场景

java_web [Maven]项目_第9张图片

java_web [Maven]项目_第10张图片
java_web [Maven]项目_第11张图片


(四) tomcat项目部署

tomcat项目部署:将项目复制到 tomcat 里 webapps 目录里
java_web [Maven]项目_第12张图片
java_web [Maven]项目_第13张图片
tomcat 导进IDEA
java_web [Maven]项目_第14张图片
java_web [Maven]项目_第15张图片
java_web [Maven]项目_第16张图片

java_web [Maven]项目_第17张图片


(五) jsp详解及内置对象

Jsp概念内嵌java代码的html页面—交互式页面
java_web [Maven]项目_第18张图片
Jsp的编译过程:jdk—>现将jsp编译成一个.java文件—>再把他编译成.class 文件

1. 添加.jar

java_web [Maven]项目_第19张图片
添加到项目目录里的lib目录中
java_web [Maven]项目_第20张图片
java_web [Maven]项目_第21张图片

2. 表单提交数据

<form action="addUser.jsp" method="post" id="myFrom" name="addUserform">


Action:数据提交地址?【html,jsp ctr,邮箱】
Method:数据提交方式【get/post…枚举类型】
get提交(显示) post提交(隐式)
Name:给表单起名字—方便与js提交表单 >

3. jsp接收数据

.jsp文件解析级应用

request 请求对象:—>封装所有客户端请求的对象—>将对应的表单元素名和值以键值对的形式封装—>用户通过其对应的方法就能获得对应的值

String name=request.getParameter("userName");

Response 响应对象

response.sendRedirect("HD_fwdPractList.jsp");

⚪Request:当客户端发起请求时创建—当服务端接收到请求时销毁
⚪Response:当服务端发起响应时创建—当客户端接收到响应时销毁

Jsp常用内置对象:
Out对象—用于向页面输出信息
Out.print()

out.print("<script>alert('修改成功');window.location.href='YH_UserList.jsp'script>");

Seesion 会话对象
⚪会话?:当客户进入一个站点到离开的那段时间称之为一会话:session监控用户在此会话过程中的一切动作
⚪由于session对象的生命周期的特殊性,在开发过程中,用session对象在多个页面共享参数
⚪Session对象的生命周期:当用户进入一个站点就创建,关闭浏览器销毁【默认的销毁时间为30min】

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>


<%@ page import="com.qf.doman.method" %>


<jsp:useBean id="m" class="com.qf.domain.method">jsp:useBean>


<%  
 
 request.setCharacterEncoding("UTF-8");

 
 String name = request.getParameter("userName");
 String s = new String(name.getBytes("iso8859-1"), "UTF-8");

 
 String name=request.getParameter("userName");
 String pass=request.getParameter("passWord");


 method m=new method();
 login p =m.checklogin(name, pass);
 
 
 response.sendRedirect("HD_fwdPractList.jsp");

 
 out.print("<script>alert('修改成功');window.location.href='YH_UserList.jsp'script>");

 
 session.setAttribute("username", name);
 
 sestion.invalidate();
 %>
 <html>
	<% %> 外面可以写html代码
	
	span ><a href="javaScript:quanxian()" id="names"><%=session.getAttribute("username") %>a>span>

 html>

4. jsp 中显示获取的多个数据

java_web [Maven]项目_第22张图片

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<jsp:useBean id="m" class="com.qf.doman.method">jsp:useBean>
<%@ page import="com.qf.doman.pojo.user" %>
<%
	List<user> list=m.getUser();
%>
	<body>
	    <table class="tablelist" style="text-align: center; width: 100%">
	    	<thead>
		    	<tr>
		        <th><input id="s" name="" type="checkbox" value="" onclick="checkAll()" />th>
		        <th>编号<i class="sort"><img src="images/px.gif" />i>th>
		        <th>用户名th>
		        <th>密码th>
		        <th>权限th>
		        <th>操作th>
		        tr>
	        thead>
	        <tbody>
		         <%for(int i=0;i<list.size();i++){ %>
			        <tr>
				        <td><input id="ss" name="" type="checkbox" value="<%=list.get(i).getUid() %>" />td>
				        <td><%=list.get(i).getUid() %>td>
				        <td><%=list.get(i).getUname() %>td>
				        <td><input readonly="readonly" type="password" value="<%=list.get(i).getUpass()%>">td>
				        <td><%=list.get(i).getUroot() %>td>
			        tr> 
		         <%} %>
	        tbody>
	    table>
	body>

(六) Servlet基本概念,原理及实操

Java Servlet 是与平台无关的服务器端组件,它运行在Servlet 容器中;
Servlet容器负责Servlet和客户的通信以及调用Servlet的方法;
Servlet和客户的通信采用“请求/响应”模式
后台版的 jsp
每一个JSP页面就是一个servlet
JSP在执行时,Web服务器先要把JSP页面翻译成Java源代码,而这个源代码就是一个servlet
servlet 可以完成JSP的所有功能

1. Servlet映射配置

java_web [Maven]项目_第23张图片

2. servlet 类创建及常用方法实操

java_web [Maven]项目_第24张图片

@WebServlet(name = "Servlet", value = "/Servlet")
public class Servlet extends HttpServlet {

   @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 处理 get 请求
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 处理 post 请求

        //弹框乱码转换
        response.setContentType("text/html;charset=UTF-8");
        //post提交中文乱码转换
        request.setCharacterEncoding("UTF-8");
        // 获取out对象
        PrintWriter out = response.getWriter();
        // 获取session对象
        HttpSession session = request.getSession();
        //获得表单数据
        String name=request.getParameter("userName");
        String pass=request.getParameter("passWord");
        // 设置标识, 用于数据共享
        session.setAttribute("username", name);
        // 获取共享数据
        String uname = (String) session.getAttribute("username");
        out.print("");
        
    }
}


(七) Ajax—实现局部刷新和异步提交—请求

Ajax的概念:利用js实现的异步交互机制—局部刷新
Ajax的分类:
1)原生态ajax :
XmlHttprequest(核心对象):–根据不同浏览器创建不同的XmlHttprequest对象【先判断你使用的是什么浏览器----】兼容性问题-----物联网—c c++| 底层交互xml 动态创建xml
2)jquery封装的ajax:
Ajax参数说明:

<script>
	$.ajax({
	    type : 'post',//设置数据请求方式
	    async : true,//设置提交模式—异步提交
	    url : 'insertUsers',//请求地址或数据提交地址---【controllor  接口】servlet
	    dataType : 'json',//设置接受服务端返回数据类型
	    // dataType : 'text',
	    
	    // Ajax提交数据
	    data:{
			name:”cuihua”,//需要带的参数或提交的数据
			age:18
		},
		// data:$('#myFrom').serialize(), //将表单数据序列化
		// myFrom 是表单 id

		// Ajax 接收数据
	    success : function(data) {
			//当数据提交成功或者接口请求成功自动执行的函数
			Data:就是服务端返回的数据
			//业务逻辑自己写
			if(data.trim()==1) {
                alert("发布成功");
                window.location.href="HD_fwdPractList.jsp";
            } else if(data.trim()==0) {
                alert("发布失败");
                window.location.href="HD_fwdPractList.jsp";
            }
	    },
	    error : function(data) {
	    	//当数据提交失败或者接口请求失败自动执行的函数
			Data:就是服务端返回的数据
	    }
	});
script>


二. jdbc 链接数据库

(一) jdbc 链接数据库原理

java_web [Maven]项目_第25张图片


(二) jdbc 链接数据库

  1. 导入mysql-connector-java-8.0.30.jar jar 包
    java_web [Maven]项目_第26张图片
  2. 生成库文件
    java_web [Maven]项目_第27张图片
    java_web [Maven]项目_第28张图片

3.jdbc 链接数据库各种情况及方法讲解(理解就行

import java.sql.*;
import java.util.HashMap;

public class TestConnectionMysql {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        HashMap<String, Object> map = new HashMap<>();

        // 面试:本机的几种表示形式
        // a:localhost	     b:127.0.0.1
        // c: ip地址(cmd -> ipconfig): 192. 168.108.1 	d:讣算机名
        // 服务端口:
        // mysql :3306 	sqlSever :1433
        // orcl: 1521	sqlite: 直接链接--文件

        // 1. 加载驱动
        Class.forName("com.mysql.cj.jdbc.Driver");  // 固定写法,加载驱动

        // 2. 用户信息和url
        String userName = "root"; // 用户名
        String  passWord = "123456"; // 密码
        String sqlName = "som"; // 数据库名称
        String url = "jdbc:mysql://localhost:3306/"+sqlName+"?serverTimezone=UTC&"+
                "useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=GMT%2b8";

        // 3. 连接成功,返回值是--数据库对象(connection) 代表数据库 是一种对象
        Connection connection = DriverManager.getConnection(url, userName, passWord);

        // 4. 创建执行对象
        Statement statement = connection.createStatement();
        // 执行对象 就可以调用对应的方法,完成对应操作

        // 5. 指向sql的对象去执行sql语句

        // Statement 方法解析
        // 1)executeQuery (查询)
        // public abstract ResultSet executeQuery(String sql) throws SQLException
        // 参数:静态的SQL SELECT(查询)语句
        // 返回值:包含有查询产生的数据的ResultSet;永远不为null
        String sql = "select * from user where phone = '15199235042'";
        ResultSet resultSet = statement.executeQuery(sql);

        // 这里count是:搜索出了多少条数据
        int count = resultSet.getMetaData().getColumnCount();  // -->3

        // resultSet.next() 的值是:查询成功为true,调用一次后其值立马变为false;查询失败为false;
        while (resultSet.next()) {
            // (1) 查询出来后,直接获取查询结果(一个一个单独获取)
            //  field 标识的字段名【键】--> phone (获取的是【键】)
            String field = resultSet.getMetaData().getColumnName(1);

            // field1 标识的值【值】--> 15199235032 (获取的是【值】)
            String field1 = (String) resultSet.getObject(field);
            // String phone = (String) resultSet.getObject("phone"); 键也可以不用获取,自己直接给即可

            // (2) 查询出来后,直接获取查询结果(一次性获取全部查询结果)
            // 注意下标是从1开始的
            for (int i = 1; i <= count; i++) {

                //  field 标识的字段名【键】--> phone (获取的是全部的【键】)
                String field2 = resultSet.getMetaData().getColumnName(i);

                // field1 标识的值【值】--> 15199235032 (获取的是全部的【值】)
                String field3 = (String) resultSet.getObject(field2);
                // String phone = (String) resultSet.getObject("phone"); 键也可以不用获取,自己直接给即可

                // (3) 查询出来后,放进map集合中 (一次性全部放进去)
                map.put(field2, resultSet.getString(field2));

                // (4) {phone=15199235032} 根据键,筛选数据库里面查到的值,并把查到的值赋值给对应的键
                map.put("phone", resultSet.getString("phone"));

                // 根据键,获取值
                String phone1 = (String) map.get("phone");
                System.out.println(phone1);
            }
        }

        // (5) 在不知道表结构的情况下获取 表源数据 表源数据对应的字段类型 表数据
        String sql1 = "select * from biao";
        ResultSet res = statement.executeQuery(sql1);

        //结果集表源数据--表结构破解ResultSetMetaData(表信息)
        ResultSetMetaData meta = res.getMetaData();

        //获得所有字段总数 (搜索出了多少条数据)
        int count1 = meta.getColumnCount();

        //遍历字段,获得对应的信息
        for(int i=1;i<=count1;i++){
            //获取字段名
            String columnName = meta.getColumnName(i);

            //获取对应的字段类型
            String columnType = meta.getColumnTypeName(i);

            // 现在已经知道了表结构,就可以运用上面的四类方式进行操作
        }

        // 2)executeUpdate (增删改)
        // public abstract int executeUpdate(String sql) throws SQLException
        // 参数:一条 SQL INSERT(插入)、UPDATE(更新) 或 DELETE(删除) 语句或没有返回值的 SQL 语句
        // 返回值:如果执行 INSERT、UPDATE 或 DELETE 语句返回行数或者为执行没有返回值的语句返回 0
        String sqls = "INSERT INTO user(phone, pwd, mibao, jijiu) VALUES('123', '123', '123', '123');";
        int number = statement.executeUpdate(sqls); // number = 1


        // 6. 释放连接
        resultSet.close();
        statement.close();
        connection.close();
    }
}

  1. 封装连接数据库,增删查改等 方法
import java.sql.*;

public class connectionMysql {
    /*
    *写方法的一般原则:
    * 1. 知道这个要干什么?【业务理解】
    * 2. 要不要返回值?返回值的意义?
    *  a: 调用此方法的目的就是为了拿到返回值
    *  b: 通过返回值判断方法的执行过程
    * 3. 方法要不要参数?
    * */
    Connection con = null;
    Statement sta = null;
    ResultSet res = null;
    // 打开数据库连接 (封装连接数据的方法,返回Connection 对象)
    public Connection openMysql() {
        try {
            String userName = "root"; // 用户名
        	String  passWord = "123456"; // 密码
        	String sqlName = "som"; // 数据库名称
        	String url = "jdbc:mysql://localhost:3306/"+sqlName+"?serverTimezone=UTC&"+
                "useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=GMT%2b8";
            // 1. 加载驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            // 2. 连接
            con = DriverManager.getConnection(url, username, pwd);
        } catch (Exception e) {
            System.out.println("------------------连接异常------------------");
            e.printStackTrace();
            System.out.println("------------------连接异常------------------");
        }
        return con;
    }

    // 增删改  (封装增删改的方法,返回查询产生的数据的ResultSet;永远不为null)
    public int update(String sql) {
        int re = 0;
        try {
            // 创建执行对象
            sta = con.createStatement();
            // 成功几条返回几, 失败返回0
            re = sta.executeUpdate(sql);
        } catch (SQLException e) {
            System.out.println("------------------操作异常------------------");
            e.printStackTrace();
            System.out.println("------------------操作异常------------------");
        }
        return re;
    }

    // 查询 (封装查询的方法,返回执行成功的行数)
    public ResultSet select(String sql) {
        try {
            // 创建执行对象
            sta = con.createStatement();
            res = sta.executeQuery(sql);
            // res: com.mysql.cj.jdbc.result.ResultSetImpl@5a4041cc
        } catch (SQLException e) {
            System.out.println("------------------查询异常------------------");
            e.printStackTrace();
            System.out.println("------------------查询异常------------------");
        }
        return res;
    }

    // 查看表信息(在只知道表名的情况下,获取数据)
    public void showTableMessage(String tableName) {
        try {
            String sql = "select * from " + tableName;
            sta = con.createStatement();
            res = sta.executeQuery(sql);
            // 结果集表源数据--表结构破解
            ResultSetMetaData meta = res.getMetaData();
            // 获得所有字段总数
            int count = meta.getColumnCount();
            // 遍历字段
            for (int i = 1; i <= count; i++) {
                // 获取字段名
                String columnName = meta.getColumnName(i);

                // 获取对应的字段类型
                int columnType = meta.getColumnType(i); // 数据库数据类型最底层是整型
                String columnTypeName = meta.getColumnTypeName(i);
                System.out.println(columnName+":"+columnTypeName);
            }
        } catch (SQLException e) {
            System.out.println("------------------查表信息异常------------------");
            e.printStackTrace();
            System.out.println("------------------查表信息异常------------------");
        }
    }

    // 关闭链接(web 阶段不建议用)
    public void closeAll() {
        try {
            if (res != null) {
                res.close();
            }
            if(sta != null) {
                sta.close();
            }
            if(con != null) {
                con.close();
            }
        }catch (SQLException e) {
            e.printStackTrace();
        }
    }
}


  1. 调用封装的各类方法

在其他.Java文件中,调用各种封装的方法;

public class Main {
    public static void main(String[] args) throws SQLException {
        connectionMysql con = new connectionMysql();
        Connection connection = con.openMysql();
        ResultSet res = con.select("select * from users");
        if(res.next()) {
            String ss = res.getString("uname");
            System.out.println(ss);
        }
    }
}

结果集剖析:
java_web [Maven]项目_第29张图片
附:数据库数据类型最底层为整型



三. 系统权限

按钮级别的权限
根据角色匹配功能

字段级别的权限
用户表,角色表,权限表,用户角色表,角色权限表

权限系统
基于权限业务开发对应得系统



四. 软件架构和程序架构

(一) 软件架构:MVC[软件开发模式]

M: Model(模型)–bean—类—逻辑实现
C: Controller(控制)—前后衔接的过程—业务协调处理(servlet)jsp
V: View(视图)----数据渲染—显示—客户端页面【jsp,html,vue,asp】


(二) 程序架构:运行模式【B/S】[C/S]

B/S架构程序:客户端浏览器到服务端—>优点:部署成本低,运行方便,培训….
C/S架构程序:客户端到服务端—>缺点:成本高,维护费劲,培训
Servlet:基本概念、原理及实操



五. Maven

Maven是一个项目管理工具,它包含了一项目对象模型(Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Manangement System),和用来运行定义在生命周期阶段中插件目标的逻辑。

(一) Maven 下载,配置环境变量

1、官网去下载maven,http://maven.apache.org/download.cgi
2、解压apache-maven-3.5.0-bin.zip 到D盘
3、右键“计算机”,选择“属性”,之后点击“高级系统设置”,点击“环境变量”,
新建用户变量 MAVEN_HOME 变量值:D:\Java\apache-maven-3.5.0
java_web [Maven]项目_第30张图片

编辑系统变量 Path 添加变量值: ;%MAVEN_HOME%\bin;

测试命令:
mvn –version
java_web [Maven]项目_第31张图片


(二) Maven相关配置文件详解

java_web [Maven]项目_第32张图片

1. Maven环境配置Conf目录中的相关配置文件

** settings.xml【Maven主配置文件】**


<localRepository>D:\IDEA\out-putlocalRepository>



<mirrors>
	<mirror>
		<id>alimavenid>
		<mirrorOf>*mirrorOf>
		<name>aliyun mavenname>
		<url>http://maven.aliyun.com/nexus/content/groups/public/url>
	mirror>
mirrors>

2. 在IDEA中配置maven

java_web [Maven]项目_第33张图片

3. IDEA当中创建maven项目步骤

java_web [Maven]项目_第34张图片

java_web [Maven]项目_第35张图片
骨架选择模式:Maven-web项目 下一步
在这里插入图片描述
java_web [Maven]项目_第36张图片
下一步:IDEA版本不同,需选择对应的maven路劲及配置路劲
java_web [Maven]项目_第37张图片

注意:不要点,等项目加载构建
java_web [Maven]项目_第38张图片

4. maven主项目结构介绍

java_web [Maven]项目_第39张图片
java_web [Maven]项目_第40张图片

5. Maven项目pom.xml文件详解 – 管理Jar包

java_web [Maven]项目_第41张图片

6. Maven项目pom.xml文件详解—插件管理

java_web [Maven]项目_第42张图片
相关依赖汇总:https://mvnrepository.com/–对应的依赖查找

Mysql连接依赖

<dependency>
  <groupId>mysqlgroupId>
  <artifactId>mysql-connector-javaartifactId>
  <version>5.1.4version>
dependency>

单元测试依赖

<dependency>
  <groupId>junitgroupId>
  <artifactId>junitartifactId>
  <version>4.11version>
  <scope>testscope>
dependency>

Oracle数据库连接依赖

<dependency>
    <groupId>com.oraclegroupId>
    <artifactId>ojdbc6artifactId>
    <version>11.2.0.4version>
dependency>

jsp依赖

<dependency>
    <groupId>javax.servletgroupId>
    <artifactId>jsp-apiartifactId>
    <version>2.0version>
dependency>

serverlete依赖

<dependency>
    <groupId>javax.servletgroupId>
    <artifactId>javax.servlet-apiartifactId>
    <version>3.1.0version>
    <scope>compilescope>
dependency>

大数据相关依赖


<dependency>
    <groupId>org.apache.hadoopgroupId>
    <artifactId>hadoop-commonartifactId>
    <version>2.7.2version>
dependency>

<dependency>
    <groupId>org.apache.hadoopgroupId>
    <artifactId>hadoop-mapreduce-client-coreartifactId>
    <version>2.7.2version>
dependency>

<dependency>
    <groupId>org.apache.hadoopgroupId>
    <artifactId>hadoop-hdfsartifactId>
    <version>2.7.2version>
dependency>

其他的依赖【关于xml创建和解析】


<dependency>
    <groupId>org.dom4jgroupId>
    <artifactId>dom4jartifactId>
    <version>2.1.0version>
dependency>
<dependency>
    <groupId>jaxengroupId>
    <artifactId>jaxenartifactId>
    <version>1.1.6version>
dependency>

SSM:框架相关的依赖

<dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-contextartifactId>
        <version>${spring.version}version>
    dependency>
    
    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-txartifactId>
        <version>${spring.version}version>
    dependency>
    
    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-jdbcartifactId>
        <version>${spring.version}version>
    dependency>
    
    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-testartifactId>
        <version>${spring.version}version>
    dependency>
    
    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-webmvcartifactId>
        <version>${spring.version}version>
    dependency>
    
    <dependency>
        <groupId>org.mybatisgroupId>
        <artifactId>mybatisartifactId>
        <version>3.4.5version>
    dependency>
    
    <dependency>
        <groupId>org.mybatisgroupId>
        <artifactId>mybatis-springartifactId>
        <version>1.3.1version>
    dependency>
    
    <dependency>
        <groupId>org.aspectjgroupId>
        <artifactId>aspectjweaverartifactId>
        <version>1.8.7version>
    dependency>
    
    <dependency>
        <groupId>com.alibabagroupId>
        <artifactId>druidartifactId>
        <version>1.0.9version>
    dependency>
    
    <dependency>
        <groupId>junitgroupId>
        <artifactId>junitartifactId>
        <version>4.12version>
        <scope>testscope>
    dependency>
    
    <dependency>
        <groupId>javax.servletgroupId>
        <artifactId>jsp-apiartifactId>
        <version>2.0version>
        <scope>providedscope>
    dependency>
    <dependency>
        <groupId>javax.servletgroupId>
        <artifactId>servlet-apiartifactId>
        <version>2.5version>
        <scope>providedscope>
    dependency>
    
    <dependency>
        <groupId>log4jgroupId>
        <artifactId>log4jartifactId>
        <version>1.2.17version>
    dependency>
    <dependency>
        <groupId>org.apache.logging.log4jgroupId>
        <artifactId>log4j-apiartifactId>
        <version>2.10.0version>
    dependency>
    <dependency>
        <groupId>org.apache.logging.log4jgroupId>
        <artifactId>log4j-webartifactId>
        <version>2.9.1version>
    dependency>
    <dependency>
        <groupId>org.slf4jgroupId>
        <artifactId>slf4j-apiartifactId>
        <version>1.7.25version>
    dependency>
    <dependency>
        <groupId>org.apache.logging.log4jgroupId>
        <artifactId>log4j-slf4j-implartifactId>
        <version>2.9.1version>
    dependency>
    <dependency>
        <groupId>org.apache.logging.log4jgroupId>
        <artifactId>log4j-jclartifactId>
        <version>2.9.1version>
    dependency>
    
    <dependency>
        <groupId>mysqlgroupId>
        <artifactId>mysql-connector-javaartifactId>
        <version>5.1.6version>
    dependency>
    
    <dependency>
        <groupId>jstlgroupId>
        <artifactId>jstlartifactId>
        <version>1.2version>
    dependency>
    <dependency>
        <groupId>taglibsgroupId>
        <artifactId>standardartifactId>
        <version>1.1.1version>
    dependency>
    
    <dependency>
        <groupId>commons-fileuploadgroupId>
        <artifactId>commons-fileuploadartifactId>
        <version>1.3.1version>
    dependency>
    <dependency>
        <groupId>commons-iogroupId>
        <artifactId>commons-ioartifactId>
        <version>2.5version>
    dependency>
    <dependency>
        <groupId>c3p0groupId>
        <artifactId>c3p0artifactId>
        <version>0.9.1.2version>
    dependency>
    
    <dependency>
        <groupId>com.github.pagehelpergroupId>
        <artifactId>pagehelperartifactId>
        <version>5.1.2version>
    dependency>
    
    <dependency>
        <groupId>org.springframework.securitygroupId>
        <artifactId>spring-security-webartifactId>
        <version>${spring.security.version}version>
    dependency>
    <dependency>
        <groupId>org.springframework.securitygroupId>
        <artifactId>spring-security-configartifactId>
        <version>${spring.security.version}version>
    dependency>
    <dependency>
        <groupId>org.springframework.securitygroupId>
        <artifactId>spring-security-coreartifactId>
        <version>${spring.security.version}version>
    dependency>
    <dependency>
        <groupId>org.springframework.securitygroupId>
        <artifactId>spring-security-taglibsartifactId>
        <version>${spring.security.version}version>
    dependency>

你可能感兴趣的:(java,java,maven,前端,tomcat,intellij-idea)