基于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是 ...
随机推荐
- html中object标签详解
定义和用法 object标签定义一个嵌入的对象.请使用此元素向您的 XHTML 页面添加多媒体.此元素允许您规定插入 HTML 文档中的对象的数据和参数,以及可用来显示和操作数据的代码. &l ...
- python enhanced generator - coroutine
本文主要介绍python中Enhanced generator即coroutine相关内容,包括基本语法.使用场景.注意事项,以及与其他语言协程实现的异同. enhanced generator 在上 ...
- 爱你不容易 —— Stream详解
作为前端,我们常常会和 Stream 有着频繁的接触.比如使用 gulp 对项目进行构建的时候,我们会使用 gulp.src 接口将匹配到的文件转为 stream(流)的形式,再通过 .pipe() ...
- ssh配置文件及问题解决
一 ssh的配置文鉴模板 Host AAA User gitolite3 HostName IP地址 IdentityFile ~/.ssh/key 二 下载代码的方法 1 ssh git2 git ...
- 【小分享】Date对象封装,时间格式化函数time()
今天再来分享下Date的应用知识点 先看效果,类似于php里边的time('yyyy-mm-dd')用法,但是我这里没有完全依照php的参数格式来,如果有需要稍微修改一下就行. 首先,明确需要用到的参 ...
- tomcat启动异常、和web.xml缺少配置异常
错误如下: 14-Feb-2017 10:50:00.665 SEVERE [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.Sta ...
- Bootstrap框架的要点--栅格系统
不同的公司要求使用框架有所不同,而Bootstrap框架在工作中使用频次较高,其中栅格系统在这一框架中的地位不容小觑,下面我们开始聊聊它吧. 简单介绍: Bootstrap提供了一套响应式.移动设备优 ...
- Java LinkedList特有方法程序小解 && 使用LinkedList 模拟一个堆栈或者队列数据结构。
package Collection; import java.util.LinkedList; /* LinkedList:特有的方法 addFirst()/addLast(); getFirst( ...
- (二) 从Angular1到Angular2需要的预备知识
1. TypeScript语法与ES6新特性 写惯了jQ的话突然从ES5跳到ES6,又是个变形的ES6(TypeScript),学习成本确实不低.不过笔者也是从ng1直接上手ng2,对与很多新特性的积 ...
- E. Devu and Flowers
E. Devu and Flowers time limit per test 4 seconds memory limit per test 256 megabytes input standard ...