北京厦门网站优化英文营销网站建设
web/
2025/10/2 16:56:05/
文章来源:
北京厦门网站优化,英文营销网站建设,做外汇网站代理商,企业网站建设开发服务目录#xff1a; 【SSH进阶之路】Struts基本原理 实现简单登录#xff08;二#xff09; 【SSH进阶之路】一步步重构MVC实现Struts框架——从一个简单MVC开始#xff08;三#xff09; 【SSH进阶之路】一步步重构MVC实现Struts框架——封装业务逻辑和跳转路径#xff08… 目录 【SSH进阶之路】Struts基本原理 实现简单登录二 【SSH进阶之路】一步步重构MVC实现Struts框架——从一个简单MVC开始三 【SSH进阶之路】一步步重构MVC实现Struts框架——封装业务逻辑和跳转路径四 【SSH进阶之路】一步步重构MVC实现Struts框架——彻底去掉逻辑判断五 【SSH进阶之路】一步步重构MVC实现Struts框架——完善转向页面大功告成六 Struts的第二篇博客【SSH进阶之路】Struts基本原理 实现简单登录二我们介绍了MVC和Struts的基本理论上篇博客【SSH进阶之路】一步步重构MVC实现Struts框架——从一个简单MVC开始三我们实现了一个MVC模型这篇博客我们解决一下上篇博客留下的第一个问题封装业务逻辑和跳转路径。 我们先回顾一下上篇博客中的TestServlet的代码 package com.liang.servlet;import java.io.IOException;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/*** 使用servlet做相关的控制转向多个V视图* author liang**/
public class TestServlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//取得访问的URIString reqeuestURI request.getRequestURI();System.out.println(reqeuestURI);//截取URI获得路径String path reqeuestURI.substring(reqeuestURI.indexOf(/,1), reqeuestURI.indexOf(.));System.out.println(path);//获得表单数据String username request.getParameter(username);UserManager userManager new UserManager();String forward ;//根据url执行相关的功能//等于添加调用添加方法添加成功转到添加页面if(/servlet/addUser.equals(path)){//调用添加的业务逻辑userManager.add(username);forward /add_success.jsp;//删除调用删除方法删除成功转到删除}else if(/servlet/delUser.equals(path)){//调用删除的业务逻辑userManager.del(username);forward /del_success.jsp;//修改调用修改方法修改成功转到修改页面}else if(/servlet/modifyUser.equals(path)){//调用修改的业务逻辑userManager.modify(username);forward /modify_success.jsp;//查询调用查询方法查询成功转到查询成功页面}else if(/servlet/queryUser.equals(path)){//调用查询的业务逻辑List userList userManager.query(username);request.setAttribute(userList, userList);forward /query_success.jsp;}else{throw new RuntimeException(请求失败);}//统一完成转向request.getRequestDispatcher(forward).forward(request, response);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request,response);}} 从TestServlet中我们发现它就是一个简单的Servlet它是Struts的前端控制器负责把所有的URL截取下来通过IF语句根据URL的不同执行相关的功能并且添加删除修改和查询各自有各自的业务逻辑和跳转路径我们可以各自的业务逻辑和跳转路径封装成不同的类并抽象出一个公共接口如下所示 下面我们看一下接口和实现类的代码 接口Action package com.liang.servlet;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public interface Action {public String execute(HttpServletRequest req, HttpServletResponse resp)throws Exception;
} 添加用户AddUserAction package com.liang.servlet;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class AddUserAction implements Action {Overridepublic String execute(HttpServletRequest req, HttpServletResponse resp)throws Exception {//获取参数String username req.getParameter(username);UserManager userManager new UserManager();//调用业务逻辑userManager.add(username);//返回跳转页面return /add_success.jsp;}}
删除用户DelUserAction package com.liang.servlet;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class DelUserAction implements Action {Overridepublic String execute(HttpServletRequest req, HttpServletResponse resp)throws Exception {
span stylewhite-space:pre /span//获取参数String username req.getParameter(username);UserManager userManager new UserManager();//调用业务逻辑userManager.del(username);//返回跳转页面return /del_success.jsp;}}
修改用户ModifyUserAction package com.liang.servlet;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class ModifyUserAction implements Action {Overridepublic String execute(HttpServletRequest req, HttpServletResponse resp)throws Exception {//获取参数String username req.getParameter(username);//调用业务逻辑UserManager userManager new UserManager();userManager.modify(username);//返回跳转页面return /modify_success.jsp;}}
查询用户QueryUserAction package com.liang.servlet;import java.util.List;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class QueryUserAction implements Action {Overridepublic String execute(HttpServletRequest req, HttpServletResponse resp)throws Exception {//获取参数String username req.getParameter(username);//调用业务逻辑UserManager userManager new UserManager();List userList userManager.query(username);req.setAttribute(userList, userList);userManager.query(username);//返回跳转页面return /query_success.jsp;}}
我们再对比看一下我们封装之后的TestServlet package com.liang.servlet;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.liang.action.Action;
import com.liang.action.AddUserAction;
import com.liang.action.DelUserAction;
import com.liang.action.ModifyUserAction;
import com.liang.action.QueryUserAction;
/*** 使用servlet做相关的控制转向多个V视图* author liang**/
public class TestServlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//取得访问的URIString reqeuestURI request.getRequestURI();System.out.println(reqeuestURI);//截取URI获得路径String path reqeuestURI.substring(reqeuestURI.indexOf(/,1), reqeuestURI.indexOf(.));System.out.println(path);Action action null;//等于添加调用AddUserActionif (/servlet/addUser.equals(path)) {action new AddUserAction();//等于删除调用DelUserAction}else if (/servlet/delUser.equals(path)) {action new DelUserAction();//等于修改调用ModifyUserAction}else if (/servlet/modifyUser.equals(path)) {action new ModifyUserAction();//等于查询调用QueryUserAction}else if (/servlet/queryUser.equals(path)) {action new QueryUserAction();}else {throw new RuntimeException(请求失败);}String forward null;//返回不同的转向页面try {forward action.execute(request, response);} catch (Exception e) {e.printStackTrace();}//根据路径,统一完成转向request.getRequestDispatcher(forward).forward(request, response);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request,response);}}通过对比我们可以发现简单了很多但是实现的道理基本一样仍然是将path截取出来做相应的判断进入对应的分支New一个刚写的ActionNew谁调谁但是此时仅仅是完成了功能系统并不灵活IF...ELSE并没有去掉扩展性不好不能适用需求。 下篇博客【SSH进阶之路】一步步重构MVC实现Struts框架——彻底去掉判断逻辑五我们解决第二个问题IF...ElSE的问题。 源码下载 转载于:https://www.cnblogs.com/ainima/p/6330997.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/85719.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!