本类是同一个问题的,但是在我另外的一个帖子中没有很好的表达出来,真是失败啊。
进入正题:
众所周知,Servlet 和 Struts中的Action是属于MVC中的C(Controler),只是一个控制器,
按说在两者之中是不应该出现业务代码的,它们只是一个控制器,只负责将视图(JSP页面)
取得的数据转发到业务层来处理,然后根据业务层的处理结果来选择相应的视图来显示,
那么在Servlet或者Action中该不该出现判断数据的代码,又如何讲数据传递到业务层呢?
光说太抽象,来点代码:
- Java code
//假设这是Servlet中的一个方法,来处理用户注册请求的public void register(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); String repeatPass = request.getParameter("repeatPass"); //主要下面这段代码该在什么地方 if( password == null || password.length() < 6 ){ //密码长度小于6位,不能注册 response.sendRedirect("some page"); return; } if( !password.equals(repeatPass)){ //两次密码不相同,不能注册 response.sendRedirect("some page"); return; } //还有一些验证,比如判断用户名是否已存在,等等 //这些代码写在什么地方?这里?还是BO? UserBo bo = new UserBo(); //是这传递 bo.addUser(new User(username,password)); //还是这样传递? bo.addUser(username,password); //forward or redirect}
------解决方案--------------------
1、数据验证可以放在validate,该过程在xxform.java里
2、如果是简单的业务逻辑放在action也挺方便,复杂的业务逻辑就要写些类来操作,然后在action里调用,再根据处理情况给用户显示相应的view
------解决方案--------------------
封装数据,交给业务层进行处理。
------解决方案--------------------
可以通过请求request啊
也可以同ActionForm获得啊
------解决方案--------------------
业务是在model里,一般是用bean,太简单没有复用价值的放在control里也就行了,我是这样认为的
------解决方案--------------------
Controler是完成Model与View之间交互的
可以具体去看看MVC那个图
------解决方案--------------------
------解决方案--------------------
顶楼上!
------解决方案--------------------
11楼的换可以
------解决方案--------------------
11 说的不错!
------解决方案--------------------
可以通过请求request啊
也可以同ActionForm获得啊
------解决方案--------------------
上楼的不错!
------解决方案--------------------
up!!!
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
servlet属于控制器,而控制器的作用就是接收客户端请求,调用相应的模型处理逻辑和数据,再由控制器根据处理的结果,选择相应的JSP或HTML文件响应客户端。所以,我认为,servlet无非就是两个作用,一个是接收用户请求数据,再一个就是完成页面的跳转,而关于如上的if判断语句我觉得应该交给bo,servlet调用bo,返回一个字符串,即目标地址。
------解决方案--------------------
两次输入的密码是否一致,可以放在页面校验。不必到servlet校验。
------解决方案--------------------
up
------解决方案--------------------