前言
经过大概6周的时间刷完Java SE、Java 也叫Jakarta 雅加达的课程,收获满满,从最开始的变量、关键字、条件语句、数组、线性表、栈、队列、二叉树、红黑树到类、接口、集合、IO流、注解、反射、网络编程、到NIO、JDBC、再到EE的内置对象、作用域、状态保存、Servlet、Listener、Filter,这一路唯一的感觉就是我以前了解的Java只是个简介罢了!JVM,多线程、并发编程、继承、多态、还有更重要的面向对象的思想是更值得推敲的东西,本文只是对近6周学的一个小总结,后续会不断完善项目。也希望大家能看到最后,相信你一定有收获!
一、项目搭建
本次是实现简单的注册、登录并简单展示功能,仅适用初学者,深知bug很多,大佬勿喷。 项目整体架构及实现如下
实现逻辑
二、业务逻辑
1.注册
部分代码如下:
public int save(User user) {
String sql ="insert into user(username,password) value(?,?)";
Connection conn =null;
PreparedStatement statement=null;
conn = getConn();
if(conn==null){
return 0;
}
try {
int byUsername = findByName(user);
if (byUsername!=0){
return 0;
}
statement = conn.prepareStatement(sql);
statement.setString(1,user.getUsername());
statement.setString(2,user.getPassword());
return statement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
finally {
closeAll(conn,statement,null);
}
return 0;
}
public int findByName(User user){
String sql ="select username from user where username=? ";
Connection conn =null;
PreparedStatement statement=null;
ResultSet resultSet=null;
conn = getConn();
if(conn==null){
return 0;
}
try {
boolean next=false;
statement = conn.prepareStatement(sql);
statement.setString(1,user.getUsername());
resultSet = statement.executeQuery();
if (resultSet==null){
return 0;
}
next= resultSet.next();
if(next){
return 1;
}
} catch (SQLException e) {
e.printStackTrace();
}
finally {
closeAll(conn,statement,resultSet);
}
return 0;
}
2.登录
部分代码如下:
public int loginFind(User user) {
String sql ="select username,password from user where username=? and password=?";
Connection conn =null;
PreparedStatement statement=null;
ResultSet resultSet=null;
conn = getConn();
if(conn==null){
return 0;
}
try {
boolean next=false;
statement = conn.prepareStatement(sql);
statement.setString(1,user.getUsername());
statement.setString(2,user.getPassword());
resultSet = statement.executeQuery();
if (resultSet==null){
return 0;
}
next= resultSet.next();
if(next){
return 1;
}
} catch (SQLException e) {
e.printStackTrace();
}
finally {
closeAll(conn,statement,resultSet);
}
return 0;
}
3.basedao
package com.jess.dao;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class BaseDao {
public static Connection getConn() {
Context ctx = null;
try {
ctx = new InitialContext();
DataSource dataSource =
(DataSource) ctx.lookup("java:comp/env/dataSource/mysql/manage");
return dataSource.getConnection();
} catch (NamingException | SQLException e) {
e.printStackTrace();
}
return null;
}
public static void closeAll(Connection connection, Statement statement, ResultSet resultSet) {
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
}
三、效果展示
1、注册
2、注册
3、登录成功
4、显示信息
四、总结
本文主要是对最近所学知识的一个总结和运用,下面我简单介绍一下业务逻辑
1、jsp 通过表单提交的数据–>get 、post方法向浏览器发送请求,
2、servlet负责解析请求存到内存,(request,respose)------service 作为属性为servlet提供服务,servlet 解析完数据以对象的形式存入内存。
3、service负责业务逻辑的处理,分别调用不同方法处理不同的业务dao层作为属性为service提供属性,
4、dao层通过上层传入的数据直接操作数据库
五、心得体会
本文还缺少很多很多模块,离真实的项目还有很长的距离,比如:没有编写接口dao层,规范性不够,代码实现的耦合性也太高了,很多常量为定义,登录密码未加密,jsp页面也为放到WEB-INF下,可以直接访问,jsp页面也没有试验异步刷新,前端页面也未处理,直接简单的找了两张图片等,但是,很适合初学者了解其中原理,请看上面的总结。 看到这里的宝贝,希望能给个免费的点赞,谢谢大家。还有如果想要全部原码的可以在下方留言或者私信,希望我们可以互相交流,一起进步!
这一路一定会有不如意,一定会有各种为什么,一定也有让你失望、又或者羡慕的人,想一想,你和其他人又不同为什么一定要和别人一样呢。
|