基于Struts自定义MVC-1
自定义MVC
数据库:Oracle
表:User(id,uname,upwd)
自定义Struts框架
一、定义Action接口
1 import javax.servlet.http.*; 2 3 public interface Action { 4 /** 5 * 执行方法 6 * @return 7 */ 8 String execute(HttpServletRequest request,HttpServletResponse response); 9 }
二、根据特定功能实现Action接口(这里用User表添加用户)
1 import javax.servlet.http.*; 2 3 import com.biz.UserBiz; 4 import com.biz.impl.UserBizImpl; 5 import com.entity.User; 6 import com.mystruts.Action; 7 /** 8 * 注册Action 完成注册功能 调用业务层 返回页面 9 * @author Administrator 10 * 11 */ 12 public class RegAction implements Action { 13 14 @Override 15 public String execute(HttpServletRequest request, 16 HttpServletResponse response) { 17 //获取请求内容 18 String uname = request.getParameter("uname"); 19 String upwd = request.getParameter("upwd"); 20 //创建User 对象 创建UserBizImpl对象 21 User user = new User(uname,upwd); 22 UserBiz userBiz = new UserBizImpl(); 23 //调用新增用户的方法 24 if(userBiz.reg(user)){ 25 request.getSession().setAttribute("login", user); 26 return "login.jsp"; 27 }else{ 28 request.getSession().setAttribute("msg", "注册失败!"); 29 return "register.jsp"; 30 } 31 } 32 33 }
三、ActionFilter(负责请求的转发,将用户的请求交给相应的action进行处理)
1 import java.io.IOException; 2 3 import javax.servlet.Filter; 4 import javax.servlet.FilterChain; 5 import javax.servlet.FilterConfig; 6 import javax.servlet.ServletException; 7 import javax.servlet.ServletRequest; 8 import javax.servlet.ServletResponse; 9 import javax.servlet.http.HttpServletRequest; 10 import javax.servlet.http.HttpServletResponse; 11 12 import com.action.RegAction; 13 /** 14 * ActionFilter 负责请求的转发 将用户的请求交给相应的Action进行处理 15 * @author Administrator 16 * 17 */ 18 public class ActionFilter implements Filter { 19 20 private FilterConfig config; 21 22 @Override 23 public void destroy() { 24 // TODO Auto-generated method stub 25 26 } 27 28 @Override 29 public void doFilter(ServletRequest arg0, ServletResponse arg1, 30 FilterChain chain) throws IOException, ServletException { 31 //强转对象 32 HttpServletRequest req = (HttpServletRequest)arg0; 33 HttpServletResponse resp = (HttpServletResponse)arg1; 34 //获取Action 去执行相应的功能 35 Action action = getAction(req); 36 //调用execute方法执行 37 String result = null; 38 try{ 39 result = action.execute(req, resp); 40 }catch(Exception ex){ 41 ex.printStackTrace(); 42 } 43 //正常得到处理后的返回值 进行页面跳转 44 if(null!=result){ 45 req.getRequestDispatcher(result).forward(req, resp); 46 } 47 } 48 49 @Override 50 public void init(FilterConfig conf) throws ServletException { 51 // TODO Auto-generated method stub 52 this.config = conf; 53 } 54 55 //得到请求地址 通过请求地址得到对应action 通过request得到请求信息 56 public Action getAction(HttpServletRequest request){ 57 //获取上URI 58 String uri = request.getRequestURI(); 59 //获取请求的路径 60 String contextPath = request.getContextPath(); 61 //截取获得action路径 62 String actionPath = uri.substring(contextPath.length()); 63 //获取action名称 64 String actionName = actionPath.substring(1,actionPath.lastIndexOf('.')).trim(); 65 //根据Action名称创建指定Action 66 Action action = null; 67 if("reg".equals(actionName)){ 68 action = new RegAction(); 69 } 70 71 return action; 72 } 73 74 75 }
四、register.jsp页面
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 3 <html> 4 <head> 5 6 <title>注册页面</title> 7 </head> 8 9 <body> 10 <form action="reg.action" method="post"> 11 username:<input name="uname" /><br/> 12 password:<input name="upwd" type="password"/><br/> 13 <input type="submit" value="注册"/> 14 <input type="reset" value="重置"/> 15 </form> 16 </body> 17 </html>
五、配置web.xml
1 <filter> 2 <filter-name>openSessionInView</filter-name> 3 <filter-class>com.web.OpenSessionInViewFilter</filter-class> 4 </filter> 5 <filter-mapping> 6 <filter-name>openSessionInView</filter-name> 7 <url-pattern>/*</url-pattern> 8 </filter-mapping> 9 <!-- 配置ActionFilter过滤器 --> 10 <filter> 11 <filter-name>actionFilter</filter-name> 12 <filter-class>com.mystruts.ActionFilter</filter-class> 13 </filter> 14 <filter-mapping> 15 <filter-name>actionFilter</filter-name> 16 <url-pattern>*.action</url-pattern> 17 </filter-mapping>
上面就完成了一个简单的自定义MVC框架 下一篇将继续深入讲解自定义MVC
基于Struts自定义MVC-1的更多相关文章
- 基于Struts自定义MVC-2
自定义MVC 数据库:Oracle表:User(id,uname,upwd)自定义Struts框架一.定义Action接口 import javax.servlet.http.*; pu ...
- 通过Struts了解MVC框架,兼说如何在面试中利用Struts证明自己
虽然目前Struts MVC框架不怎么用了,但它确是个能帮助大家很好地入门Web MVC框架,而且,一些历史项目可能还用Struts,反正技多不压身,大家如果能在面试中通过项目证明自己Struts这块 ...
- .NET MVC 学习笔记(四)— 基于Bootstarp自定义弹出框
.NET MVC 学习笔记(四)—— 基于Bootstarp自定义弹出框 转载自:https://www.cnblogs.com/nele/p/5327380.html (function ($) { ...
- 封装:简要介绍自定义开发基于WPF的MVC框架
原文:封装:简要介绍自定义开发基于WPF的MVC框架 一.目的:在使用Asp.net Core时,深感MVC框架作为页面跳转数据处理的方便,但WPF中似乎没有现成的MVC框架,由此自定义开发一套MVC ...
- GPS部标平台的架构设计(三) 基于struts+spring+hibernate+ibatis+quartz+mina框架开发GPS平台
注意,此版本是2014年研发的基于Spring2.5和Struts2的版本,此版本的源码仍然销售,但已不再提供源码升级的服务,因为目前我们开发的主流新版本是2015-2016年近一年推出的基于spri ...
- 基于存储过程的MVC开源分页控件--LYB.NET.SPPager
摘要 现在基于ASP.NET MVC的分页控件我想大家都不陌生了,百度一下一大箩筐.其中有不少精品,陕北吴旗娃杨涛大哥做的分页控件MVCPager(http://www.webdiyer.com/)算 ...
- 自定义MVC框架
我们在学习自定义MVC框架的时候常常会听到Model1 ,Model2和MVC.那么什么是Model1 什么是Model2什么又是MVC呢? 什么是Model1? Model1就是一种纯jsp开发技术 ...
- Struts2 自定义MVC框架
一.Model1与Model2: Model1:就是一种纯jsp开发技术,将业务逻辑代码和视图渲染代码杂糅在一起. Model2:Model2是在Model1的基础上,将业务逻辑的代码分离开来,单独形 ...
- struts2自定义MVC框架
自定义MVC:(首先了解Model1和Model2的概念) Model1与Model2: Model1:就是一种纯jsp开发技术,将业务逻辑代码和视图渲染代码杂糅在一起. Model2:Model2是 ...
随机推荐
- --@angularJS--浅谈class与Ng-Class的应用
1.angularjs的表达式是可以写在class里面动态改变其值的,写法如下: □.CSS1.html: <!doctype html><html ng-app="MyC ...
- HDU-1862-EXCEL排序
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1862 这个题考的就是你对sort函数的掌握:会用sort函数对字符串,数字排序,只要懂得话题目很简单 ...
- easyui帮助文档地址
http://www.jeasyui.com/documentation/index.php# http://www.jeasyui.net/tutorial/22.html http://www.j ...
- iOS-桥接方式
很多时候都会使用到CoreFoundation的函数,其返回值为CoreFoundation框架的对象,如果想转换为Foundation框架的对象就可以使用桥接方式来搞定. 示例代码: CFStrin ...
- ASP.NET Forms身份认证
asp.net程序开发,用户根据角色访问对应页面以及功能. 项目结构如下图: 根目录 Web.config 代码: <?xml version="1.0" encoding= ...
- 蓝桥网试题 java 基础练习 特殊的数字
-------------------------------------------------------- 笑脸 :-) ------------------------------------ ...
- 内功心法 -- java.util.ArrayList<E> (6)
写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...
- java_JDBC(3)
Batch和Fetch两个特性非常重要.Batch相当于JDBC的写缓冲,Fetch相当于读缓冲 如果把JDBC类比为JAVA IO的话,不使用Fetch和Batch相当于直接使用FileInputS ...
- imageNamed 与 initWithContentsOfFile 区别
1.imageNamed: UIImage *image = [UIImage imageNamed:"]; UIImage的类方法 第一次读取图片的时候,先把这个图片放到缓存中,下次再使用 ...
- Jasmine基础语法
简介 Jasmine 是JavaScript的测试框架,它不依赖其他框架,也不依赖DOM,更重要的是它语法简单.以下实例都是基于Jasmine 2.5.2的,并且来自官网:https://jasmin ...