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的问题但能困扰我好久的问题的时候,我其实都挺开心的,因为只有当你遇到问题,解决问题,你才会成长,多一种经历,你就多一种不一样的体验,想要在这块走的更远,好多人都多你要不断学习,才不会被淘汰,我自认是个不爱学习的主,但我认可这个话,我也在努力加油,在这里呢 我就想让和我一样的人,继续坚持,也继续加油,哪有什么一帆风顺,不碰不闯,怎么能在社会立足呢。
之后,我还会继续将我所遇到的问题,在博客中展示,可以解决的我也会吧方法分享出来,大家一起学习。
欢迎各位来留言!!!