自定义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的更多相关文章

  1. 基于Struts自定义MVC-2

    自定义MVC        数据库:Oracle表:User(id,uname,upwd)自定义Struts框架一.定义Action接口 import javax.servlet.http.*; pu ...

  2. 通过Struts了解MVC框架,兼说如何在面试中利用Struts证明自己

    虽然目前Struts MVC框架不怎么用了,但它确是个能帮助大家很好地入门Web MVC框架,而且,一些历史项目可能还用Struts,反正技多不压身,大家如果能在面试中通过项目证明自己Struts这块 ...

  3. .NET MVC 学习笔记(四)— 基于Bootstarp自定义弹出框

    .NET MVC 学习笔记(四)—— 基于Bootstarp自定义弹出框 转载自:https://www.cnblogs.com/nele/p/5327380.html (function ($) { ...

  4. 封装:简要介绍自定义开发基于WPF的MVC框架

    原文:封装:简要介绍自定义开发基于WPF的MVC框架 一.目的:在使用Asp.net Core时,深感MVC框架作为页面跳转数据处理的方便,但WPF中似乎没有现成的MVC框架,由此自定义开发一套MVC ...

  5. GPS部标平台的架构设计(三) 基于struts+spring+hibernate+ibatis+quartz+mina框架开发GPS平台

    注意,此版本是2014年研发的基于Spring2.5和Struts2的版本,此版本的源码仍然销售,但已不再提供源码升级的服务,因为目前我们开发的主流新版本是2015-2016年近一年推出的基于spri ...

  6. 基于存储过程的MVC开源分页控件--LYB.NET.SPPager

    摘要 现在基于ASP.NET MVC的分页控件我想大家都不陌生了,百度一下一大箩筐.其中有不少精品,陕北吴旗娃杨涛大哥做的分页控件MVCPager(http://www.webdiyer.com/)算 ...

  7. 自定义MVC框架

    我们在学习自定义MVC框架的时候常常会听到Model1 ,Model2和MVC.那么什么是Model1 什么是Model2什么又是MVC呢? 什么是Model1? Model1就是一种纯jsp开发技术 ...

  8. Struts2 自定义MVC框架

    一.Model1与Model2: Model1:就是一种纯jsp开发技术,将业务逻辑代码和视图渲染代码杂糅在一起. Model2:Model2是在Model1的基础上,将业务逻辑的代码分离开来,单独形 ...

  9. struts2自定义MVC框架

    自定义MVC:(首先了解Model1和Model2的概念) Model1与Model2: Model1:就是一种纯jsp开发技术,将业务逻辑代码和视图渲染代码杂糅在一起. Model2:Model2是 ...

随机推荐

  1. iOS 之 Block Variable

    在某个变量前面加__block  ,这个变量就变成了block variable.那么就可以在block里面修改该值.

  2. python 循环使用 while 或 for 语句实现用户名密码输错三次退出

    如有错误欢迎大家指出,新手初来乍到.程序没那么复杂,是最简单的. 一.需求 编写登录文件 .py1. 输入用户名密码2. 正确,输出欢迎登录3. 当输入用户名和密码小于 3 次,输入用户名或者密码错误 ...

  3. HTML <head>

    HTML <head> 元素 <head> 元素包含了所有的头部标签元素.在 <head>元素中你可以插入脚本(scripts), 样式文件(CSS),及各种met ...

  4. C# 泛型初探

    初探的类: public class TClass { /// <summary> /// int参数 /// </summary> /// <param name=&q ...

  5. iOS 插件化开发汇总 Small框架

    应用插件化背景 目前很多应用功能越来越多,软件显得越来越臃肿.因此插件化就成了很多软件发展的必经之路,比如支付宝这种平台级别的软件: 页上密密麻麻的功能,而且还在增多,照这个趋势发展下去,软件包的大小 ...

  6. Chrome 插件集锦

    原文出处:CN_Simo 子曾曰:"工欲善其事,必先利其器.居是邦也."--语出<论语·卫灵公>:其后一百多年,荀子也在其<劝学>中倡言道:"吾尝 ...

  7. 《InsideUE4》UObject(四)类型系统代码生成

    你想要啊?想要你就说出来嘛,你不说我怎么知道你想要呢? 引言 上文讲到了UE的类型系统结构,以及UHT分析源码的一些宏标记设定.在已经进行了类型系统整体的设计之后,本文将开始讨论接下来的步骤.暂时不讨 ...

  8. oracle_decode、case

    Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ...

  9. Spark RDD算子介绍

    Spark学习笔记总结 01. Spark基础 1. 介绍 Spark可以用于批处理.交互式查询(Spark SQL).实时流处理(Spark Streaming).机器学习(Spark MLlib) ...

  10. 数据结构(Java描述)之二叉树

    基础概念 二叉树(binary tree)是一棵树,其中每个结点都不能有多于两个儿子. 二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于或等于它 ...