基于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是 ...
随机推荐
- iOS 之 Block Variable
在某个变量前面加__block ,这个变量就变成了block variable.那么就可以在block里面修改该值.
- python 循环使用 while 或 for 语句实现用户名密码输错三次退出
如有错误欢迎大家指出,新手初来乍到.程序没那么复杂,是最简单的. 一.需求 编写登录文件 .py1. 输入用户名密码2. 正确,输出欢迎登录3. 当输入用户名和密码小于 3 次,输入用户名或者密码错误 ...
- HTML <head>
HTML <head> 元素 <head> 元素包含了所有的头部标签元素.在 <head>元素中你可以插入脚本(scripts), 样式文件(CSS),及各种met ...
- C# 泛型初探
初探的类: public class TClass { /// <summary> /// int参数 /// </summary> /// <param name=&q ...
- iOS 插件化开发汇总 Small框架
应用插件化背景 目前很多应用功能越来越多,软件显得越来越臃肿.因此插件化就成了很多软件发展的必经之路,比如支付宝这种平台级别的软件: 页上密密麻麻的功能,而且还在增多,照这个趋势发展下去,软件包的大小 ...
- Chrome 插件集锦
原文出处:CN_Simo 子曾曰:"工欲善其事,必先利其器.居是邦也."--语出<论语·卫灵公>:其后一百多年,荀子也在其<劝学>中倡言道:"吾尝 ...
- 《InsideUE4》UObject(四)类型系统代码生成
你想要啊?想要你就说出来嘛,你不说我怎么知道你想要呢? 引言 上文讲到了UE的类型系统结构,以及UHT分析源码的一些宏标记设定.在已经进行了类型系统整体的设计之后,本文将开始讨论接下来的步骤.暂时不讨 ...
- oracle_decode、case
Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ...
- Spark RDD算子介绍
Spark学习笔记总结 01. Spark基础 1. 介绍 Spark可以用于批处理.交互式查询(Spark SQL).实时流处理(Spark Streaming).机器学习(Spark MLlib) ...
- 数据结构(Java描述)之二叉树
基础概念 二叉树(binary tree)是一棵树,其中每个结点都不能有多于两个儿子. 二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于或等于它 ...