开发环境IDEA + Maven + MySQL + Jdk1.8 + Tomcat

开发环境
IDEA + Maven + MySQL + Jdk1.8 + Tomcat

修改配置
在 pomx.xml 配置文件中,修改配置、添加依赖与插件

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <maven.compiler.source>1.8</maven.compiler.source>
  <maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
  <!-- junit 测试 -->
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>
  <!-- web servlet -->
  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
    <scope>provided</scope>
  </dependency>
  <!-- 日志打印相关的jar -->
  <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.2</version>
  </dependency>
  <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.2</version>
  </dependency>
  <!-- mysql 驱动包 -->
  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.19</version>
  </dependency>
  <!-- json 依赖 -->
  <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.62</version>
  </dependency>
  <!-- hutool工具集 -->
  <dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.4.7</version>
  </dependency>
  <!-- commons-io 依赖 -->
  <dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.4</version>
  </dependency>
  <!-- 添加百度编辑器ueditor支持 -->
  <dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.1</version>
  </dependency>
  <!-- jstl依赖 -->
  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
  </dependency>
  <!-- lombok插件 -->
  <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.12</version>
    <scope>provided</scope>
  </dependency>
</dependencies>
<build>
  <finalName>lezijie-note</finalName>
  <plugins>
    <!-- 编译环境插件 -->
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>2.3.2</version>
      <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <encoding>UTF-8</encoding>
      </configuration>
    </plugin>
    <!-- Tomcat插件 -->
    <plugin>
      <groupId>org.apache.tomcat.maven</groupId>
      <artifactId>tomcat7-maven-plugin</artifactId>
      <version>2.1</version>
      <configuration>
        <port>8080</port> <!-- 启动端口 默认:8080 -->
        <path>/note</path> <!-- 项目的站点名,即对外访问路径 -->
        <server>tomcat7</server> <!-- 服务器名称 -->
      </configuration>
    </plugin>
  </plugins>
</build>

数据库连接
配置文件
在 src/main/resources 目录下,新建 db.properties 文件

# 连接MYSQL数据库的配置文件 注:等号的前后不要写空格
# 驱动名
jdbcName=com.mysql.cj.jdbc.Driver
# 数据库连接 ( db_lezijie_note是数据库的名称)
dbUrl=jdbc:mysql://localhost:3306/db_lezijie_note?
useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false
# 数据库的连接账号 (账号基本上都是root)
dbName=root
# 数据库的连接密码 (每个人的数据库密码可能不一致,需要修改)
dbPwd=root1234

编写 DBUtil
在 com.lezijie.note.util 目录下,新建 Java 类

/**
* 数据库的工具类
* 1、得到数据库连接
* 2、关闭资源
*
*/
public class DBUtil {
    // 定义配置对象
    private static Properties properties = new Properties();
    static {
        try {
            // 加载配置文件(输入流)
            InputStream in =
DBUtil.class.getClassLoader().getResourceAsStream("db.properties");
            // 通过load()方法将输入流加载到配置文件对象中
            properties.load(in);
            // 通过配置对象的getProperty()方法得到驱动名,加载驱动
            Class.forName(properties.getProperty("jdbcName"));
       } catch (Exception e) {
            e.printStackTrace(); // 打印异常
       }
   }
    /**
     * 得到数据库连接
     *
     * @return
     */
    public static Connection getConnection() {
        Connection connection = null;
        try {
            // 得到数据库连接信息
            String dbUrl = properties.getProperty("dbUrl");
            String dbName = properties.getProperty("dbName");
            String dbPwd = properties.getProperty("dbPwd");
            // 得到数据库连接
            connection = DriverManager.getConnection(dbUrl, dbName, dbPwd);
       } catch (Exception e) {
            e.printStackTrace();
}
        return connection;
   }
    /**
     * 关闭资源
     * 当资源对象不为空时,关闭资源
     *
     * @param resultSet
     * @param preparedStatement
     * @param connection
     */
    public static void close(ResultSet resultSet, PreparedStatement
preparedStatement, Connection connection) {
        try {
            if (resultSet != null) {
                resultSet.close(); // 关闭资源
           }
            if (preparedStatement != null) {
                preparedStatement.close(); // 关闭资源
           }
            if (connection != null) {
                connection.close(); // 关闭资源
           }
       } catch (Exception e) {
            e.printStackTrace();
       }
   }
}

单元测试
测试目录
在 src/main 目录下,新建 test 目录(测试目录),新建 java 目录(测试源文件夹)
测试数据库
在 test/java 目录的 com.lezijie.note 包下,新建测试类
       

/**
* 单元测试类
*/
public class TestDB {
    @Test
    public void testConnection() {
        System.out.println(DBUtil.getConnection());
   }
}

使用日志
配置文件
在 src/main/resources 目录下,新建 log4j.properties 文件

### 设置###stdout,
log4j.rootLogger = all,D,E,stdout
### 输出信息到控制台 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd 
HH:mm:ss,SSS} method:%l%n%m%n
### 输出DEBUG 级别以上的日志到=D://logs/log.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = D://logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG 
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] 
- [ %p ] %m%n
### 输出ERROR 级别以上的日志到=E://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =E://logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR 
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] 
- [ %p ]

// 使用日志工厂类,记入日志
private static Logger logger = LoggerFactory.getLogger(DBUtil.class); 
// 记录日志
logger.info("在{}时,获取数据库连接", new SimpleDateFormat("yyyy-MM-dd 
HH:mm:ss").format(new Date()));

用户模块
用户登录
登录页面
在 src/main/wabapp 目录下, 新建 statics 文件夹,将静态资源拷贝进来(js、css、images及相关插
件)
1. HTML 转换为 JSP
在 wabapp 目录下,新建 login.jsp 页面,将 login.html 里面的内容拷贝到 login.jsp 中
2. 修改路径
修改引入的 js 、css、images 资源的路径
3. 访问页面
在浏览器中,通过 http://localhost:8080/note/login.jsp 访问
前端实现
思路分析
后端实现
编写 User

/**
* 用户类
*/
@Getter
@Setter
public class User {
 private Integer userId; // 用户ID,主键
 private String uname; // 用户名称
 private String upwd; // 用户密码
 private String nick; // 用户昵称
 private String head; // 用户头像
 private String mood; // 用户心情
 
}

编写 UserDao
通过用户名查询用户对象,返回 User 对象

public class UserDao {
    // 引入日志对象
    private Logger logger = LoggerFactory.getLogger(UserDao.class);
    /**
     * 根据用户名查询用户对象
     * @param userName
     * @return
     * @throws Exception
     */
    public User queryUserByName(String userName) {
        User user = null;
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        try {
            // 1. 获取数据库连接
            connection = DBUtil.getConnection();
            // 2. 定义SQL语句
            String sql = "select userId,uname,upwd,nick,head,mood from tb_user 
where uname = ? ";
            // 打印SQL语句
            logger.info("SQL语句为:{}", sql);
            // 3. 获取预处理块
            preparedStatement = connection.prepareStatement(sql);
            // 4. 填充参数 执行 获得结果集
            preparedStatement.setString(1, userName);
            // 5. 执行查询,返回结果集
            resultSet = preparedStatement.executeQuery();
            // 6. 分析结果集,得到查询结果
            if(resultSet.next()){ //只有一个结果
                user = new User();
                user.setUserId(resultSet.getInt("userId"));
                user.setUname(resultSet.getString("uname"));

                user.setUpwd(resultSet.getString("upwd"));
           }
       } catch (Exception e) {
            e.printStackTrace();
       } finally {
            // 7. 关闭数据库连接
            DbUtil.close(connection, preparedStatement, resultSet);
       }
        return user;
 

字符乱码处理
非法访问拦截
自动登录
退出登录
显示用户信息
加载头像
验证昵称的唯一性
修改用户信息
类型模块
1.1 查询类型列表
1.2 验证类型名的唯一性
1.3 添加类型
1.4 修改类型
1.5 删除类型

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lst0426

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值