续上(1)了
1.编写公共基础类
(1)编写数据库配置文件db.properties,只要连接的是MySQL数据库driver是固定的,url中的127.0.0.1是本地IP,也可以用localhost替换,3306是MySQL默认端口号,smbms是我们前面创建的数据库,问号后面是设置utf8编码,解决乱码问题的
1 driver=com.mysql.jdbc.Driver 2 url=jdbc:mysql://127.0.0.1:3306/smbms?useUnicode=true&&characterEncoding=utf-8 3 username=root 4 password=123456
(2)编写数据库的公共类,包括数据库连接信息的获取,数据库连接,公共的查询方法,公共的增删改方法
1 package com.xiaoma.dao;
2
3 import java.io.IOException;
4 import java.io.InputStream;
5 import java.sql.*;
6 import java.util.Properties;
7
8 //用来操作数据库的基类(公共类)
9 public class BaseDao {
10 private static String url;
11 private static String username;
12 private static String password;
13
14 //静态代码块,类启动的时候就会加载
15 static {
16 //通过类名.class就获取了该类的反射对象,就可以通过类加载器去读取资源,然后通过getResourceAsStream将一个资源变成流
17 //说白了就是让这个类可以读取到db.properties这个文件
18 InputStream is = BaseDao.class.getClassLoader().getResourceAsStream("db.properties");
19
20 //有了这个流后,就可以通过properti对象将文件里的具体内容搞出来
21 Properties properties=new Properties();
22 try {
23 properties.load(is);
24 } catch (IOException e) {
25 e.printStackTrace();
26 }
27
28 //使用实例化后的properties对象获取内容
29 url=properties.getProperty("url");
30 username=properties.getProperty("username");
31 password=properties.getProperty("password");
32 }
33
34 //获取数据库连接
35 public static Connection getConnection() throws Exception {
36 Connection connection=null;
37 //注册驱动(因为我的环境版本问题,没法用那个forname,这里就用这一行代码去替代,同样的效果)
38 com.mysql.jdbc.Driver driver=new com.mysql.jdbc.Driver();
39 //获取数据库连接对象
40 connection= DriverManager.getConnection(url,username,password);
41 //将连接对象返回
42 return connection;
43 }
44
45 //编写查询公共方法
46 //因为我们不晓得sql有多少个参数,是啥类型嘞,所以弄一个Object类型的数组来暂存这个参数,然后通过循环去遍历
47 public static ResultSet execute(Connection connection,String sql,Object[] params,ResultSet resultSet,PreparedStatement preparedStatement) throws Exception {
48 //通过preparedStatement预编译一个sql语句
49 connection.prepareStatement(sql);
50
51 //遍历参数
52 for (int i = 0; i < params.length; i++) {
53 preparedStatement.setObject(i+1,params[i]);
54 }
55
56 //执行sql
57 resultSet = preparedStatement.executeQuery();
58
59 //返回数据
60 return resultSet;
61 }
62
63 //编写增删改公共方法(与查询类似)
64 public static int execute(Connection connection,String sql,Object[] params,PreparedStatement preparedStatement) throws Exception {
65 //通过preparedStatement预编译一个sql语句
66 connection.prepareStatement(sql);
67
68 //遍历参数
69 for (int i = 1; i < params.length; i++) {
70 preparedStatement.setObject(i+1,params[i]);
71 }
72
73 //执行sql
74 int updataRows = preparedStatement.executeUpdate();
75
76 //返回数据
77 return updataRows;
78 }
79
80 //释放资源
81 public static boolean closeResourses(Connection connection,ResultSet resultSet,PreparedStatement preparedStatement){
82 boolean flag=true;
83 if (connection != null) {
84 try{
85 connection.close();
86 //如果关闭完成后还有资源存在,就让GC回收
87 resultSet=null;
88 }catch (Exception e){
89 e.printStackTrace();
90 //如果关闭出现了错误,就让flag=false
91 flag=false;
92 }
93 }
94 if (resultSet != null) {
95 try{
96 resultSet.close();
97 //如果关闭完成后还有资源存在,就让GC回收
98 resultSet=null;
99 }catch (Exception e){
100 e.printStackTrace();
101 //如果关闭出现了错误,就让flag=false
102 flag=false;
103 }
104 }
105 if (preparedStatement != null) {
106 try{
107 preparedStatement.close();
108 //如果关闭完成后还有资源存在,就让GC回收
109 resultSet=null;
110 }catch (Exception e){
111 e.printStackTrace();
112 //如果关闭出现了错误,就让flag=false
113 flag=false;
114 }
115 }
116 return flag;
117 }
118 }
2.编写字符编码过滤器
1 package com.xiaoma.filter;
2
3 import javax.servlet.*;
4 import java.io.IOException;
5
6 public class CharacterEncodingFilter implements Filter {
7 @Override
8 public void init(FilterConfig filterConfig) throws ServletException {
9
10 }
11
12 @Override
13 public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
14 servletRequest.setCharacterEncoding("utf-8");
15 servletResponse.setCharacterEncoding("utf-8");
16
17 filterChain.doFilter(servletRequest,servletResponse);
18 }
19
20 @Override
21 public void destroy() {
22
23 }
24 }
3.在web.xml文件内注册过滤器
1 <!--注册字符编码过滤器--> 2 <filter> 3 <filter-name>CharacterEncodingFilter</filter-name> 4 <filter-class>com.xiaoma.filter.CharacterEncodingFilter</filter-class> 5 </filter> 6 <filter-mapping> 7 <filter-name>CharacterEncodingFilter</filter-name> 8 <url-pattern>/*</url-pattern> 9 </filter-mapping>
4.将静态资源导入到项目的webapp目录下,与WEB-INF目录同级别,至此准备工作完毕
静态资源链接
链接:https://pan.baidu.com/s/1IDz2EPuBlmYD7lsk5G1yWA
提取码:9999
第一阶段项目结构目录


浙公网安备 33010602011771号