一般来说,我们对Java web的理解为,我的前台通过Ajax发出一个请求(requset)数据到Servlet,然后在Servlet进行一系列的处理之后传入到DAO层,与数据库内的数据进行匹配等一系列操作,然后对传来的数据返回一个响应(response)到Servlet然后在通过Ajax获取相应的结果。
这个时候,是不是有个疑问,Servlet的作用只是为了接受请求和返回响应的请求,那么在书写的时候,把大堆的业务逻辑写在Servlet中,这就显得特别的繁琐,而且代码的可读性较差,所以就引入另一个东西叫做Service(服务),这个时候,我们我们就把写在Servlet中处理的业务逻辑的代码写到service中,使Servlet只是接收和响应请求的一个东西。那么具体该怎么做呢?
1、dao方法中先去定义一个接口(书写所有的dao方法),这样是为了使代码更加清晰,逻辑层次更加明了,代码的可读性也大大提高。
2、Servlet只负责接受请求和返回响应
3、Service把业务逻辑都放到service中去实现
4、Service层的书写规范:先定义一个接口,然后去实现这个接口的实现类
5、书写步骤:
(1)、定义接口,在接口中书写该接口中提供的方法
(2)、实现该接口的实现类,alt +enter(接口名上面)提示声明实现类
、
(3)、类名声明为接口名+impl 说明是DAO方法的实现类
包名 会放在DAO下面的一个impl中
具体代码示例奉上:
首先大概看一下目录结构:
UserDAO代奉上:
package dao; import cn.huadian.bean.User; import java.util.List; public interface UserDao { User findById(String userId); int add(User user); int delete(User user); int update(User user); List<User>select(User user); }
UserDaoimpl代码奉上:
package dao.impl; import cn.huadian.bean.User; import dao.UserDao; import java.util.List; public class UserDaoImpl implements UserDao { @Override public User findById(String userId) { return null; } @Override public int add(User user) { return 0; } @Override public int delete(User user) { return 0; } @Override public int update(User user) { return 0; } @Override public List<User> select(User user) { return null; } }
UserServlet代码奉上:
package servlet; import service.UserService; import service.impl.UserServiceImpl; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; @WebServlet(name = "UserServlet",urlPatterns = "/userServlet") public class UserServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String userId = request.getParameter("userId"); String password = request.getParameter("password"); byte type = Byte.parseByte(request.getParameter("type")); UserService userService = new UserServiceImpl(); String result = userService.login(userId, password, type); PrintWriter out = response.getWriter(); out.write(result); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } }
UserService接口代码奉上:
package service; public interface UserService { String login(String userId,String password,byte type); }
UserServiceimpl代码奉上:
package service.impl; import cn.huadian.bean.User; import dao.UserDao; import dao.impl.UserDaoImpl; import service.UserService; public class UserServiceImpl implements UserService { @Override public String login(String userId, String password, byte type) { UserDao userDao = new UserDaoImpl(); User byId = userDao.findById(userId); if (byId.getPassword().equals(password)){ } return null; } }