MessageDigest设计风格:

本文详细介绍Google在2015年发布的DesignSupportLibrary,该库包含8个MaterialDesign组件,最低支持Android2.1。文章深入讲解了TextInputLayout的使用方法,包括布局文件配置、hint颜色设置及主题应用。同时,介绍了SnackBar的使用方式,为开发者提供全面的MaterialDesign组件指南。

1. 简介

Design Support Library是Google在2015年的IO大会上发布的全新Material Design支持库,在这个support库里面主要包含了 8 个新的 Material Design组件,最低支持 Android 2.1。
安卓的需要:implementation ‘com.android.support:design:28.0.0’
安卓X的不需要
在这里插入图片描述

2.使用

TextInputLayout
布局文件

1 <android.support.design.widget.TextInputLayout
2        android:id="@+id/layout_account"
3        android:layout_width="match_parent"
4        android:layout_height="wrap_content"
5        android:layout_marginLeft="20dp"
6        android:layout_marginRight="20dp"
7        android:layout_marginTop="60dp">
8

9        <EditText
10            android:layout_width="match_parent"
11            android:layout_height="wrap_content" />
12

13    </android.support.design.widget.TextInputLayout>

在EditText中设置textColorHint属性是没有效果的,textColorHint会根据Theme的颜色来显示,只能通过设置Activity的Theme来更改hint的颜色。
•TextInputLayout包裹EditText,注意:TextInputLayout只能有一个子控件

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
2    <item name="colorPrimary">@color/colorPrimary</item>
3    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
4    <item name="colorAccent">@color/colorAccent</item>
5    <item name="android:textColorHint">@color/color_333333</item>
6</style>

属性:

app:counterEnabled="true"      //设置是否显示字数统计
2app:counterMaxLength="15"      //设置字数统计的最大值
3app:counterOverflowTextAppearance="@style/counterOverFlowAppearance"   //设置超出最大值后的样式
4app:counterTextAppearance="@style/counterAppearance"  

SnackBar:
最普通的SnackBar,只有文字说明,复杂的SnackBar可以带按钮及事件。

Snackbar.make(v, "谢谢浏览我的博客", Snackbar.LENGTH_SHORT).show();  //和Toast很像

其余可以点击连接继续观看
本文借鉴于https://blog.youkuaiyun.com/Fly_li_sir/article/details/79704021

项目背景 基于 Books 项目的 Java Web 架构(Servlet+JSP+JDBC),扩展实现包含管理员登录、教师信息维护、优秀学生展示的学校官网系统。 一、已有资源清单 技术栈 Java 8+、Servlet 3.0、JSP、MySQL Apache Commons DbUtils(数据库操作) JUnit(单元测试) 可用组件 JDBCUtil类:数据库连接工具(含getConnection()方法) PageUtil类:分页工具(支持泛型) BookDaoImpl类:CRUD 操作示例 前端基础模板(含 CSS 样式、表单处理) 接口规范 所有 DAO 方法需遵循 Books 项目的异常处理模式 Servlet 请求路径采用/module/action格式 二、功能实现要求 1. 管理员模块 数据库表: sql CREATE TABLE admin ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) UNIQUE, password VARCHAR(100), -- 存储SHA-256加密值 role VARCHAR(20) DEFAULT 'admin', create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); 核心接口: java // AdminDao.java Admin getByUsername(String username); boolean verifyPassword(String rawPassword, String encryptedPassword); // 需实现加密验证 登录流程: 接收/admin/login POST 请求(参数:username、password) 通过 DAO 查询用户 验证密码(明文→SHA-256→比对数据库) 成功则将 Admin 对象存入 Session,重定向至/admin/dashboard 2. 教师信息维护 数据库表: sql CREATE TABLE teacher ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, title VARCHAR(50), department VARCHAR(50), profile TEXT, photo_url VARCHAR(255), status TINYINT DEFAULT 1, create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); 核心接口: java // TeacherDao.java List<Teacher> listByPage(int pageNum, int pageSize); void save(Teacher teacher); void update(Teacher teacher); void delete(int id); Servlet 路径: /admin/teacher/list:分页展示教师列表 /admin/teacher/add:添加教师 /admin/teacher/edit/{id}:编辑教师 /admin/teacher/delete/{id}:删除教师 3. 优秀学生展示 数据库表: sql CREATE TABLE student ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, grade VARCHAR(20), major VARCHAR(50), achievement TEXT, photo_url VARCHAR(255), is_excellent TINYINT DEFAULT 0, create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); 核心接口: java // StudentDao.java List<Student> listExcellentStudents(int limit); // 前台展示 PageInfo<Student> listByPage(int pageNum, int pageSize); // 后台管理 页面要求: 前台:/front/students展示优秀学生列表(图片 + 简介) 后台:/admin/student支持分页管理学生信息 三、技术实现约束 1. 代码复用规则 数据库操作:复用JDBCUtil的getConnection()方法 分页功能:复用PageUtil类,泛型参数使用Teacher/Student 事务处理:遵循 Books 项目的 DAO 层异常处理模式 2. 安全规范 密码加密:使用 SHA-256(示例实现) java public static String encrypt(String rawPassword) { try { MessageDigest digest = MessageDigest.getInstance("SHA-256"); byte[] hash = digest.digest(rawPassword.getBytes(StandardCharsets.UTF_8)); return bytesToHex(hash); } catch (NoSuchAlgorithmException e) { throw new RuntimeException(e); } } SQL 注入防护:所有查询必须使用预编译语句 3. 前端规范 页面布局:保持与 Books 项目一致的 CSS 风格 文件上传:使用enctype="multipart/form-data"表单 图片存储:上传路径统一为/uploads/teachers/和/uploads/students/ 四、测试与验收标准 1. 单元测试 AdminDaoTest:验证用户查询和密码验证 TeacherDaoTest:验证 CRUD 操作 StudentDaoTest:验证优秀学生查询 2. 集成测试 使用 Postman 测试以下流程: 管理员登录(200 OK) 未登录访问/admin/*重定向至登录页 添加教师成功后在列表显示 前台学生页面正确展示优秀学生 3. 性能指标 教师 / 学生列表加载时间≤500ms(数据量≤100 条) 文件上传成功率≥99%(文件大小≤2MB) 五、交付文档要求 数据库 DDL 脚本:包含所有新增表结构 接口文档:每个 Servlet 的请求路径、参数、返回格式 核心类代码清单: Admin/Teacher/Student 实体类 所有 DAO 接口及实现 关键 Servlet 代码(如登录逻辑) 测试用例:JUnit 测试代码及 Postman 集合导出文件 六、协作建议 代码共享:使用 GitHub Gist 或 Pastebin 分享代码片段 问题追踪:通过 issue 列表记录实现中的问题 分阶段交付: 阶段 1:数据库设计 + 实体类 阶段 2:DAO 层实现 阶段 3:Servlet 层实现 阶段 4:前端页面 阶段 5:测试与优化
07-07
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值