学生管理Servlet

1.创建Maven项目
2.IDEA中配置数据库
3.创建表
4.导入jar包
5.创建包
6.文件内容
7.获取数据库连接
8.实现dao层调用数据库
9.Service层
10.Cotroller层(Servlet)
11.前端工程

1.创建Maven项目

2.配置数据库

右侧Dtatabase --》点击左上角的+ --》 选择DataSource
注意:可能报告时区错误,填写Asia/Shanghai

3.创建表

  • student:id,name,age,birth,emailjk
  • school:id,name,phone,proid(省id),cityid(市id),areaid(区id),info(详细地址)
  • locations:id,name,ltype(省/市/区),pid(父id)
  • course:id,name,code(课程代号)
  • sc:id,sid,cid,score

4.导入jar包

在pom.xml中导入依赖包
导入mysql/servlet/fastjson包

//<dependencies></dependencies>模块中写入坐标信息即可导入
<dependencies>
	<dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.0.1</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.22</version>
    </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.77</version>
    </dependency>
</dependencies>  

5.创建包和文件

==》 main
	==》 java
		==》com.etoak.student
			==》controller
			==》dao
				==IStudentDao(接口,声明需要用到的所有方法)
				==StudentDaoImpl(实现上面的方法)
			==》entity
			==》factory
				==》CF(连接池,提供数据库连接)
			==》service
			==》utils
			==》vo
				==StudentVo(存放前端的返回来的数据)
	==》resources
		==》db.properties(连接配置资源文件与CF文件相对应)
	
	==》webapp

6.entity实体类包

1.entity实体类

//几个表创建几个实体类
//实现Getter和Setter方法

7.获取数据库连接

1.连接池依赖

<dependency>
	<groupId>commons-dbcp</groupId>
	<artifactId>commons-dbcp</artifactId>
	<version>1.4</version>
</dependency>

2.配置资源文件
db.properties

m.driver=com.mysql.cj.jdbc.Driver
m.url=jdbc:mysql://127.0.0.1:3306/et2202?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
m.user = root
m.pwd = etoak

3.获得连接

  • CF
package com.etoak.student.factory;

import org.apache.commons.dbcp.BasicDataSource;

import java.io.InputStream;
import java.sql.Connection;
import java.util.Properties;

public class CF {
    public static void main(String[] args){
        System.out.println( CF.getConnection());

    }
    private static BasicDataSource ds = new BasicDataSource();

    static {
        try{
            Properties pro = new Properties();
            InputStream is = CF.class.getClassLoader().getResourceAsStream("db.properties");
            pro.load(is);

            ds.setDriverClassName(pro.getProperty("m.driver"));
            ds.setUrl(pro.getProperty("m.url"));
            ds.setUsername(pro.getProperty("m.user"));
            ds.setPassword(pro.getProperty("m.pwd"));
        }catch(Exception e){
            e.printStackTrace();
        }
    }

    public  static Connection getConnection(){
        try{
            return ds.getConnection();
        }catch (Exception e){
            e.printStackTrace();
            return null;
        }
    }
}

  • db.properties

8.实现dao层调用数据库

1.声明方法(接口)

  • IStudentDao
package com.etoak.student.dao;

import com.etoak.student.entity.Course;
import com.etoak.student.entity.Sc;
import com.etoak.student.entity.School;
import com.etoak.student.entity.Student;
import com.etoak.student.vo.StudentVo;

import java.util.List;

public interface IStudentDao {
    //查询所有学生
    //查询所有学校
    //查询所有课程
    List<School> queryAllSchools();
    List<Course> queryAllCourses();

    public List<Student> querySome(StudentVo vo);
    public int countStu(StudentVo vo);
    public List<Sc> queryCourseAndScoreByStuId();
}

2.实现接口里的方法

  • StudentDaoImpl
package com.etoak.student.dao;

import com.etoak.student.entity.Course;
import com.etoak.student.entity.Sc;
import com.etoak.student.entity.School;
import com.etoak.student.entity.Student;
import com.etoak.student.factory.CF;
import com.etoak.student.vo.StudentVo;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

public class StudentDaoImpl implements IStudentDao {
    @Override
    public List<School> queryAllSchools() {
        String sql = "select * from student";
        List<School> data = new ArrayList<>();

        try(Connection con = CF.getConnection();
            PreparedStatement pst = con.prepareStatement(sql);
            ResultSet rs = pst.executeQuery()){

            while (rs.next()){
                School school = new School();
                school.setId(rs.getInt("id"));
                school.setPhone(rs.getString("phone"));
                school.setName(rs.getString("name"));
                data.add(school);
            }
            return  data;
        }catch (Exception e){
            e.printStackTrace();
            return null;
        }
    }

    @Override
    public List<Course> queryAllCourses() {
        return null;
    }

    @Override
    public List<Student> querySome(StudentVo vo) {
        return null;
    }

    @Override
    public int countStu(StudentVo vo) {
        return 0;
    }

    @Override
    public List<Sc> queryCourseAndScoreByStuId() {
        return null;
    }
}

9.Service层

Service调用dao层,对Controller层提供数据支持

public class StudentService {
    private IStudentDao dao = new StudentDaoImpl();
    public List<School> queryAllSchs(){
        return dao.queryAllSchs();
    }
}

10.Cotroller层(Servlet)

Cotroller层调用Service层的数据,将数据显示在前端

//相当于<url-pattern>
@WebServlet({"/queryAllSchs"})
//继承HttpServlet
public class StudentServlet extends HttpServlet {
	//覆盖doGet()/doPost()等方法
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req,resp);
    }
	//在doGet()/doPost()等方法里判断请求的url甩锅给其他方法实现对数据的json转换和输出
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String url = req.getRequestURL().toString();
        if (url.contains("queryAllSchs")){
            this.queryAllSchs();
        }
    }
    
    //将数据转成json并输出
    protected void queryAllSchs(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //得到数据
        StudentService ss = new StudentService();
        List<School> data = ss.queryAllSchs();
        //处理数据(设置输出的ContentType,转为json格式)
        resp.setContentType("text/plain;charset=UTF-8");
        String jsonStr = JSONArray.toJSONString(data);
        //输出数据
        PrintWriter out = resp.getWriter();
        out.write(jsonStr);
        out.flush();
        out.close();
    }
}

11.前端工程

a.创建Vue项目
b.导入依赖

/*
main.js文件
*/
//npm i element-ui -S
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
//npm i echarts@4.9.0 -S
import echarts from 'echarts'
//npm i axios -S
import axios from 'axios'
//npm i qs -S
import qs from 'qs'
//把组件注册到Vue实例中
Vue.prototype.$ajax = axios
Vue.prototype.$charts = echarts
Vue.prototype.$qs = qs
Vue.use(ElementUI)
//注册后台接口地址
axios.defaults.baseURL = "http://localhost:8080/student"

c.书写结构/样式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值