少年击剑更吹箫,剑气箫心一例消。这篇文章主要讲述JavaWeb文件上传相关的知识,希望能为你提供帮助。
javaWeb文件上传
Hello,各位小伙伴好久不见,本周我们学习JavaWeb中最重要的技术之一,文件上传,该案例我会用一个小型的用户管理系统实现,一步步带入,内容通俗易懂,下面我们步入正题!做一个简单的用户管理系统功能如下
用户注册,参数有用户名,用户名密码,用户头像,技术栈:后端采用JavaWeb、MySQL5.7、Druid连接池、前端采用bootstrap框架结合jsp
用户登录,登录成功后跳转至主页显示用户头像和名称,支持注销账号,注销账号后,页面跳转至登录页
先上效果完整操作项目演示:
包含:用户注册,用户登录,用户登录后显示用户信息,即头像,账号名,最右侧显示注销,点击注销后跳转至登录页
文章图片
文章图片
项目结构Java源码
文章图片
前端页面jsp
文章图片
准备工作数据表准备t_user_info
CREATE TABLE `t_user_info` (
`noid` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL,
`password` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL,
`head_portrait_path` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,
PRIMARY KEY (`noid`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
Jar文件准备项目所需jar包如下:
文章图片
jar文件放在WEB-INF/lib文件夹下,主要是为了安全。
文件上传需要的jar包:
文章图片
jar文件我会同步资源,小伙伴们不用担心哦~
项目结构简介本项目采用三层架构实现,即:service层、dao层、servlet层
- servlet层:
http://localhost/Blog/user/addUser访问user模块的addUser
http://localhost/Blog/user/getUserList访问user模块的getUserList
http://localhost/Blog/dept/addDept访问dept的addDept
http://localhost/Blog/dept/getDeptList访问dept的getDeptList
这样一个对应的类解决该类的所有对数据库的增删改查操作,提高了程序的可维护性,减少代码的冗余,提高了程序的健壮性。
抽取出公共父类:BaseServletBaseServlet类核心代码
public class BaseServlet extends HttpServlet
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
//1.获取浏览器请求的资源
String uri = req.getRequestURI();
//2.获取请求的方法名,最后斜线后面的内容
String methodName = uri.substring(uri.lastIndexOf("/")+1);
try
//3.根据方法名获取方法,通过反射获取
Method method = this.getClass().getMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);
//4.调用方法
method.invoke(this, req, resp);
catch (Exception e)
// TODO Auto-generated catch block
e.printStackTrace();
- dao层
db.properties配置文件:
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1/db_blog?useSSL=true
username=root
password=111111
BaseDao核心代码
public class BaseDao
//采用单例模式实现,防止数据库连接超时
private static DataSource ds = null;
public QueryRunner initQueryRunner() throws Exception
if (ds == null)
String dbFile = this.getClass().getClassLoader().getResource("/").getFile();
dbFile = dbFile.substring(1) + "db.properties";
FileReader fr = new FileReader(dbFile);
Properties pro = new Properties();
pro.load(fr);
ds = DruidDataSourceFactory.createDataSource(pro);
QueryRunner qur = new QueryRunner(ds);
return qur;
【JavaWeb文件上传】Userservlet核心代码
@WebServlet("/user/*")
public class UserServlet extends BaseServlet
//业务层类,用于调用业务层方法
UserService userService = new UserServiceImpl();
/**
* 注册用户
* @param req
* @param resp
*/
public void register(HttpServletRequest req, HttpServletResponse resp)
//获取数据
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload fileUpload= new ServletFileUpload(factory);
try
List< FileItem> fileItemList = fileUpload.parseRequest(req);
//获取当前项目的路径
String推荐阅读
- 一文看懂博睿数据AIOps场景算法和能力
- 联盟链 Hyperledger Fabric 应用场景
- cisco ASA配置
- STM32F103系列开发_点亮LED灯
- 用Python爬虫,寻找这个夏天最凉快的地方。
- #yyds干货盘点# js学习笔记三十六事件委托
- Paxos 诞生的曲折历史
- 自动化运维工具Ansible(12)调试与优化 Ansible
- 玩转Python日志模块(logging)