基于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是 ...
随机推荐
- jquery 编写插件入门
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <sc ...
- origin从图中获得数据
有Origin的原图,即利用Origin的"copy page"功能直接拷贝到文字处理软件的数据图,对于这种图,双击用Origin打开后,双击要导出数据的权限,打开"pl ...
- MySQL生产库开发规范
MySQL开发规范 文件状态: [ ] 草稿 [√] 正式发布 [ ] 正在修改 文件标识: 当前版本: V1.0 作 者: 贺磊 完成日期: 2016-05-24 变更记录 序号 ...
- (转)java生成UUID通用唯一识别码 (Universally Unique Identifier)
(原文链接:http://blog.csdn.net/carefree31441/article/details/3998553) UUID含义是通用唯一识别码 (Universally Uniq ...
- Round-Robin负载均衡算法及其实现原理
毫无疑问,随着互联网.移动网络接入成本的降低,互联网正在日益深入地走入我们的生活,越来越成为人们获取信息的高效平台,ICP行业也顺势呈现出强劲的成长趋势,成为互联网迅猛发展形势下最大的受益者,也直接促 ...
- php之 人员的权限管理(RBAC)
1.想好权限管理的作用? 2.有什么权限内容? 3.既然有权限管理那么就会有管理员? 4.登录后每个人员的界面会是不一样的? 一.想好这个权限是什么? 就做一个就像是vip的功能,普通用户和vip用户 ...
- HDU4734(数位dp)
F(x) Time Limit: 1000/500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- MyBatis 源码分析——动态代理
MyBatis框架是如何去执行SQL语句?相信不只是你们,笔者也想要知道是如何进行的.相信有上一章的引导大家都知道SqlSession接口的作用.当然默认情况下还是使用DefaultSqlSessio ...
- HDU 2568[前进]模拟
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2568 关键思想:傻傻地模拟 代码如下: #include<iostream> using ...
- 《JAVASCRIPT高级程序设计》DOM扩展
虽然DOM为XML及HTML文档交互制定了一系列的API,但仍然有几个规范对标准的DOM进行了扩展.这些扩展中,有很多是浏览器专有的,但后来成了事实标准,于是其他浏览器也提供了相同的实现:浏览器开发商 ...