MVCWeb(二)

2、MVCWeb框架
mvc框架分为三层:m模型层;c控制层;v视图层,使用框架就是为了将一个软件的编程实现前后端分离,逻辑上写代码更加清楚。
客户端到服务器:发送请求----->服务器接受请求---->服务器响应请求回传给客户端
在后台的代码中:应该就是servlet—>service—>dao;所以我们大致分为
bean;dao;service;servlet;util(这是工具包),有老师告诉我说我们应该反着写代码,也就是从bean来往servlet写,因为bean是靠近数据库的。这块我就用我最近写的一个代码来给你们体现一下 先看效果:在这里插入图片描述
在这里插入图片描述
这就是一个简单的将数据库中的数据呈现出来。
创建的包主要有:
在这里插入图片描述
关于包的配置以及tomcat还是附图:在这里插入图片描述
tomcat:最下面的这个Application context改为 “ /”,原因就是访问的之后只需要加载你所要访问的页面的名称就可。
在这里插入图片描述
bean包下的代码:

//实体类包----主要存放和数据库对应的实体类
    //类名 == 表名
    //列名 == 属性名
    //实体类需要包含:属性  构造方法(无参、有参) getter/setter
public class User {
    private Integer id;
    private String username;
    private String password;

    public User(Integer id, String username, String password) {
        this.id = id;
        this.username = username;
        this.password = password;
    }

    public User() {
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

dao包(包含其中的Impl):


    //接口名 + Impl == 当前类名
public class UserDaoImpl extends DruidUtil implements UserDao {
    @Override
    public List<User> getall() {
        List list = new ArrayList();

        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet resultSet = null;
        try {
            conn = getConnection();
            ps = conn.prepareStatement("select * from user");
            resultSet = ps.executeQuery();
            while (resultSet.next()){
                User user = new User();
                user.setId(resultSet.getInt("id"));
                user.setUsername(resultSet.getString("username"));
                user.setPassword(resultSet.getString("password"));
                list.add(user);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        finally {
            close(conn,ps,resultSet);
        }
        return list;
    }
}

//实体类名 +Dao == 当前类名
    //定义操作数据库的方法
public interface UserDao {
    public List<User> getall();
}

service包(包含Impl):

public class UserServiceImpl implements UserService {

    private UserDao userDao = new UserDaoImpl();

    @Override
    public List<User> getall() {
        return userDao.getall();
    }
}
//bean类名 + Service == 当前类名
    //service层主要定义业务逻辑,现阶段主要实现调取Dao层
public interface UserService {
    //查询全部
    public List<User> getall();
}

servlet包:


@WebServlet(urlPatterns = "/getUsers")
public class UserServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //接受参数
        //调取service层方法
        UserServiceImpl userService = new UserServiceImpl();
        List<User> getall = userService.getall();

        //跳转页面
        req.setAttribute("userList",getall);
        req.getRequestDispatcher("/show.jsp").forward(req,resp);
    }
}

util包在MVCWeb(一)中,就不详细说明。
关于页面:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<table border="1" width="500px" bgcolor="gray">
    <tr>
        <td>id</td>
        <td>username</td>
        <td>password</td>
    </tr>
    <c:forEach items="${userList}" var="user">
        <tr>
            <td>${user.id}</td>
            <td>${user.username}</td>
            <td>${user.password}</td>
        </tr>

    </c:forEach>
</table>
</body>
</html>

关于<%@taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>语句,就涉及到了JSP的标准标签库(JSTL),其中jsp网页上写代码有几种方法,一种叫做小脚本:<%这里是写代码的地方%>;还有一种就是EL,具体你们可以百度。
ps:最后说一点,我呢,学习写代码这块,其实说白了 我就觉得我挺白痴的,好多东西都不是很懂,有些问题能困扰好久,但是慢慢的,每次解决一个在常人看来就是很easy的问题但能困扰我好久的问题的时候,我其实都挺开心的,因为只有当你遇到问题,解决问题,你才会成长,多一种经历,你就多一种不一样的体验,想要在这块走的更远,好多人都多你要不断学习,才不会被淘汰,我自认是个不爱学习的主,但我认可这个话,我也在努力加油,在这里呢 我就想让和我一样的人,继续坚持,也继续加油,哪有什么一帆风顺,不碰不闯,怎么能在社会立足呢。
之后,我还会继续将我所遇到的问题,在博客中展示,可以解决的我也会吧方法分享出来,大家一起学习。
欢迎各位来留言!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值