自定义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. 关于firefox启动就崩溃的问题

    前些天在公司内网机器安装了Firefox Developer,每次启动直接就崩溃.最后发现问题出在Firefox的硬件加速上.解决办法: 1.右击firefox快捷方式,选择属性,在“目标”后面,即f ...

  2. BOM总结

    一.BOM概念 BOM:Browser Object Model  浏览器对象模型,定义了JS操作浏览器的一些方法和属性 二.BOM方法 (在BOM里面大部分的方法都是调用window对象下的方法得到 ...

  3. Spring util-namespace下标签相关操作

    java代码 package com.stono.sprtest; import java.util.List; import java.util.Map; import java.util.Set; ...

  4. 导入android工程没有R文件的解决办法

    第一种: 千万不要重启Eclipse.也不自己创建R.java 类文件! 右击你的工程(项目)——>Android Tools——>Fix Project Properties       ...

  5. JQuery之 serialize() 及serializeArray() 实例介绍

    这两个方法都是jq封装的,主要用于form表单. serialize(); 1.创建一个标准url编码显示的文本字符转: 2.操作的对象是表单元素结合的jq对象: serializeArray(); ...

  6. 简述jpg、gif、png-8、png-24的区别,分别使用场景

    gif.jpg.png格式的图片在网站制作中的区别 Gif 格式特点: 1.透明性:gif是一种布尔透明类型,即它可以使全透明,也可是全不透明,但是它并没有半透明的(alpha透明). 2.动画:gi ...

  7. 理解Node.js的事件轮询

    前言 总括 : 原文地址:理解Node.js的事件轮询 Node小应用:Node-sample 智者阅读群书,亦阅历人生 正文 Node.js的两个基本概念 Node.js的第一个基本概念就是I/O操 ...

  8. MVC - 云服务器部署

    本章将和大家分享的是如果在云服务器上部署mvc,云服务器部署其实也不高大上,就和咋们在自己电脑上用iis发布部署站点一样,只是需要使用云解析把自己购买的域名解析到对应的自己的云服务器上,这些都是用的云 ...

  9. android之intent显式,显式学习

    intent,意图 当从一个Activity到另一个Activity时调用,这里重点学习显式,隐式的使用 使用语句上的区别: 隐式意图:                 显式意图: setAction ...

  10. java学习阶段三:运算符和结构学习

    import java.util.Scanner;/* * JAVA中运算符的学习: * 算术运算符:+.-.*./ 和 %,两个整数相除,结果还是整数. * 赋值运算符:=.+=.-=.*=./=. ...