基于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

时间: 2024-10-08 15:34:19

基于Struts自定义MVC-1的相关文章

基于ASP.NET MVC和Bootstrap搭建响应式个人博客站

1.0 为什么要做这个博客站? www.zynblog.com 在工作学习中,经常要搜索查找各种各样的资料,每次找到相关资料后都会顺手添加到浏览器书签中,时间一长,书签也就满了.而且下次再点击这个书签时,可能 就会忘记当时为什么要添加这个书签了,更有可能书签连接已经无效.这样一来,也就不方便自己查阅了.如果转载.收藏到自己的博客园账号中.CSDN账号 中,脚本之家中,知乎中等等,依然是很凌乱,不方便下次查阅. 因此,我下决心开发一个个人技术博客站.主要原因是:可以整合各种宝贵资源,将知识变为宝库

JSP JavaWEB 验证码的实现 基于struts验证码实现

验证码的作用和实现 验证码的作用,很常见的就是登录与注册,或者在贴吧,一些BBS等多处用于防止恶意攻击的.So,web开发者应该学会验证码的设计和实现,我们在开发web项目的时候,当涉及到登录,注册等功能时,我应该采用验证码技术,防止我我们开发的项目是相对于没有验证码的安全点.验证码只是防止机器的批量等暴力攻击,如果是Hacker,那验证码也只是炮灰了 ^-^. 验证码的实现过程:四个步骤搞定~ (由于小弟最近在学习struts,所以本次验证码实现是基于struts的) 一,既然是在struts

自定义MVC框架

一.实现自定义MVC的体系结构图 1.Model I模式开发Web应用时,分两种情况: *纯JSP技术方式开发 *JSP+JavaBean方式开发 2.Model I模式开发的不足: *JSP页面中嵌入大量的Java代码,可读性差. *大量代码在JSP中难以复用. *后期维护及扩展的难度大. 3.为了克服Model I模式的缺陷,引入了Model II的模式开发 *Model II模式体现了基于MVC(Model-View-Controller,模型-视图-控制器)的设计模式,简单的说,Mode

基于ASP.NET MVC和Bootstrap搭建响应式个人博客站(一)

1.0 为什么要做这个博客站? www.zynblog.com   在工作学习中,经常要搜索查找各种各样的资料,每次找到相关资料后都会顺手添加到浏览器书签中,时间一长,书签也就满了.而且下次再点击这个书签时,可能 就会忘记当时为什么要添加这个书签了,更有可能书签连接已经无效.这样一来,也就不方便自己查阅了.如果转载.收藏到自己的博客园账号中.CSDN账号 中,脚本之家中,知乎中等等,依然是很凌乱,不方便下次查阅. 因此,我下决心开发一个个人技术博客站.主要原因是:可以整合各种宝贵资源,将知识变为

Java Web自定义MVC框架详解 (转)

转自:http://blog.csdn.net/jackfrued/article/details/42774459 最近给学生讲Java Web,希望他们能够在学完这部分内容后自己实现一个MVC框架.但是突然发现百度上能搜索到的靠谱的资料并不是很多,有些只是原理没有代码实现,有些有 代码实现但是对于初学者来说理解起来还是比较困难,于是决定把自己讲自定义MVC框架的内容放在这里分享给大家,不仅仅是代码,也有原理和探讨.内容会比 较长,因为我打算用递增的方式讲解如何写一个自定义MVC框架,重点是前

基于 HtmlHelper 自定义扩展Container

基于 HtmlHelper 自定义扩展Container Intro 基于 asp.net mvc 的权限控制系统的一部分,适用于对UI层数据呈现的控制,基于 HtmlHelper 的扩展组件 Code 基于 asp.net mvc 的权限控制系统示例代码:https://github.com/WeihanLi/AccessControlDemo 权限控制核心代码:https://github.com/WeihanLi/AccessControlDemo/tree/master/AccessCo

Struts2 自定义MVC框架

一.Model1与Model2: Model1:就是一种纯jsp开发技术,将业务逻辑代码和视图渲染代码杂糅在一起. Model2:Model2是在Model1的基础上,将业务逻辑的代码分离开来,单独形成一个Servlet,Model2也是基于MVC开发 二.MVC设计模式: 由3个部分组成,各部分作用如下: Model:模型,主要用于数据和业务的处理 View:视图,用于数据的显示 Controller:控制器,用于进行流程控制 MVC设计模式的特点: ①一个模型可以对应多个视图 ②显示与逻辑控

struts2自定义MVC框架

自定义MVC:(首先了解Model1和Model2的概念) Model1与Model2: Model1:就是一种纯jsp开发技术,将业务逻辑代码和视图渲染代码杂糅在一起. Model2:Model2是在Model1的基础上,将业务逻辑的代码分离开来,单独形成一个Servlet,Model2也是基于MVC开发. 总结MVC特点如下: (1)数据的获取和显示分离     (2)控制器将不同的模型和视图组合在一起     (3)应用分为三部分,三部分之间松耦合并协同工作,从而提高应用的可扩展性和可维护

基于struts 2.3的家政服务平台V2.0粉色主题-java家政服务平台家政网mysql

基于struts 2.3的家政服务平台V2.0粉色主题-java家政服务平台家政网mysql数据源 1.包含源程序,数据库脚本.2.课题设计仅供参考学习使用,可以在此基础上进行扩展完善.开发环境:Eclipse ,MySQL 5.1,JDK1.7,Tomcat 7涉及技术点:MVC模式.JavaWeb.Struct.JDBC.HTML.CSS.JQUERY.Maven.C3P0.分页.文件上传.购物车等.实现功能:充值.购买歌曲.poi数据导入导出.歌曲上传下载.歌曲播放.用户注册登录注销,管理