基于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是 ...
随机推荐
- xshell安装运行时提示缺少mfc110.dll
下载最新的mfc110.dll文件 https://pan.baidu.com/share/link?shareid=1932421734&uk=1784696518&app=zd 之 ...
- WPF 实现验证码功能
产生验证码的类:ValidCode.cs public class ValidCode { #region Private Fields /// <summary> /// PI /// ...
- C# 启动停止SQLServer数据库服务器
C#启动停止SQL数据库服务方法之一: 在命令行里填写命令:net start/stop mssqlserver C#启动停止SQL数据库服务方法之二: 通过C#代码实现: class Program ...
- spring mvc 必须传某个参数的写法
在controller中写 @RequestMapping(中的params="json") @RequestMapping(value = "/{username}&q ...
- 解决npm install安装了太多架包的问题
比如我安装gulp时,会多出很多无用的包,如下图: 经过查询,原来是npm升级了导致的,在npm3.0以上的版本,包的依赖不再安装在每个架包的node_modules文件夹内,而是安装在顶层的node ...
- hashcode的一些了解
1.hashcode的作用? hashcode代表对象的特征,在集合类中广泛的使用. 2.hashcode是如何生成的? 在普通的对象中,获得对象的内存的地址,经过一些算法,不同对象生成不同的hash ...
- Android jni 编程4(对基本类型二维整型数组的操作)
Android jni 编程 对于整型二维数组操作: 类型一:传入二维整型数组,返回一个整型值 类型二:传入二维整型数组,返回一个二维整型数组 声明方法: private native int Sum ...
- hibernate注解的简单应用
注解代替了我们用的*.hbm.xml文件.简少了我们的代码量:应用简单. @Override 用途:重写父类的同名方法 单元测试注解 @Test 用途:用于测试 @Before 用途:单测方法走之前执 ...
- ZooKeeper 学习笔记
ZooKeeper学习笔记 1. zookeeper基本概念 zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,是hadoop和Habase的重要组件,是为分布式应用提供一致性服 ...
- 【Zookeeper】源码分析之请求处理链(二)
一.前言 前面学习了请求处理链的RequestProcessor父类,接着学习PrepRequestProcessor,其通常是请求处理链的第一个处理器. 二.ZooKeeper源码分析 2.1 类的 ...