狂神说smbms项⽬(完整)
⽬录
smbms
浏览器项⽬中出现乱码问题:配置tomcat启动参数-ding=UTF-8
技术亮点
1. 可以使⽤EL表达式将请求信息提取到登录页⾯
2. 使⽤json实现前后端分离
3. 使⽤ajax更新部分⽹页技术
4. 对增删改需要启动事务处理,对事务的特性有更清晰的认识
5. 可以使⽤StringBuffer实现字符串拼接,以及使⽤HashMap封装键值对参数传递到前端,使⽤List集合将多个User类封装保存,可
以使⽤list集合拼接参数,使⽤Object集合传递参数
6. 对MVC三层架构得到清晰认识,实现职责分明,便于后期维护以及开发
7. 多使⽤标识符切换控制
8. 深⼊理解了重定向和请求转发的区别
1. 在后端重定向路径需要填写当前的项⽬路径再加上转发的位置,请求转发只需要填写转发的位置
2. 重定向请求路径会发⽣改变,请求转发不会
9. 每编写完⼀个servlet就马上注册(以后可以直接使⽤springMVC框架)
10. 通过模糊查询获取信息
11. 业务层可以说是⼀个桥梁,调⽤Dao层,供控制层使⽤
系统功能结构图
数据库
项⽬搭建准备⼯作
1. 搭建⼀个模板maven webapp项⽬
2. 配置Tomcat
3. 测试项⽬能否运⾏起来
4. 导⼊所依赖的jar包:
1. servlet 实现servlet接⼝
2. jsp jsp标签
3. mysql-connector-java java连接数据库
4. jstl jsp标签库
5. standard jsp标签库所依赖的包
5. 搭建项⽬结构
6. 编写实体类
ORM映射:表----->类
7. 编写基本公共类
1. 数据库配置⽂件
sql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/smbms?useUnicode=true&characterEncoding=utf8&useSSL=true
username=root
password=123456
2. 编写数据库的公共类
//操作数据库的公共类
public class BaseDao {
private static String driver;
private static String url;
private static String username;
private static String password;
//静态代码块同类初始化,在类加载的时候就初始化
static {
//通过类加载器去读取对应的资源
ClassLoader loader = ClassLoader();
InputStream is = ResourceAsStream("db.properties");
Properties properties = new Properties();
try {
properties.load(is);
} catch (IOException e) {
e.printStackTrace();
}
driver = Property("driver");
url = Property("url");
username = Property("username");
password = Property("password");
}
//获取数据库的连接
public static Connection getConnection(){
Connection connection = null;
try {
Class.forName(driver);
connection = Connection(url, username, password);
} catch (Exception e) {
e.printStackTrace();
}
return connection;
}
/*
预编译的sql,执⾏的时候不需要传sql
预编译的sql,执⾏的时候不需要传sql
*/
//编写查询的公共类
public static ResultSet execute(Connection connection,String sql,Object[] param,PreparedStatement statement,ResultSet resultSet){ try {
statement = connection.prepareStatement(sql);
//setObject,占位符从1开始,参数下标从0开始
for (int i = 0; i < param.length ; i++) {
statement.setObject(i+1,param[i]);
}
resultSet = uteQuery();
} catch (SQLException e) {
e.printStackTrace();
}
return resultSet;
}
//编写增删改的公共类
public static int execeute(Connection connection,String sql,Object[] param,PreparedStatement statement){
int resultNum = 0;
try {
statement = connection.prepareStatement(sql);
for (int i = 0; i < param.length ; i++) {
statement.setObject(i+1,param[i]);
}
resultNum = uteUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
return resultNum;
}
//关闭资源的公共类
public static boolean close(Connection connection,PreparedStatement statement,ResultSet resultSet){
boolean flag = true;
if (resultSet != null){
try {
resultSet.close();
//垃圾回收的操作
resultSet = null;
} catch (SQLException e) {
e.printStackTrace();
//如果没有释放成功el表达式获取map的值
flag = false;
}
}
if (statement != null){
try {
statement.close();
statement = null;
} catch (SQLException e) {
e.printStackTrace();
flag = false;
}
}
if (connection != null){
try {
connection.close();
connection = null;
} catch (SQLException e) {
e.printStackTrace();
flag = false;
}
}
return flag;
}
}
3. 编写字符编码过滤器
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletEx servletRequest.setCharacterEncoding("utf-8");
servletResponse.setCharacterEncoding("utf-8");
filterChain.doFilter(servletRequest, servletResponse);
}
8. 导⼊静态资源
登录功能实现
思路:
1. 编写前端登录页⾯------> login.jsp
2. 设置欢迎页⾯,让服务器已启动就跳转到登录页⾯
<!-- 设置欢迎页 -->
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
3. 编写Dao层得到⽤户登录的接⼝
//从数据库查询指定的⽤户,这⾥不需要获取连接数据库对象,交给业务层去做
public User getLoginUser(Connection connection,String userCode) throws SQLException;
4. 编写Dao层的实现类
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论