servlet实现MVC
来源:互联网 发布:微信公众号淘宝客制作 编辑:程序博客网 时间:2024/06/10 01:56
1. 首先,最原始的servlet只能处理一个请求;
2.通过增加一个method=?的一个参数,使得一个servlet能够处理多个不同的请求,这么就导致一个问题:在servlet中会出现大量的if else的判断语句;
3.通过发现:由于传递过来的参数和servlet中的方法名字相同,就可以使用反射来动态的调用方法;
String methodParam = request.getParameter("method");Method m = this,getMethod(methodParam,"HttpServletRequest","HttpServletResponse");m.invoke(this,request,response);
4.再一次的优化:由于每个servlet都要使用这个方法,可以把她写在一个公共类(一个继承Servlet的基类)里,(每次有一个请求的时候就会调用这段代码)
如何实现呢?servlet的生命周期:初始化仅仅一次,init()方法也是仅仅执行一次,每次有请求的时候,就会调用service()方法,然后service()根据请求的类型再去调用doGet()还是doPost()方法;所以应该在service()方法里加上上面的代码;
5.此时,每个方法的最后面的跳转都是一样的代码,能不能简化呢?
可以让处理请求的方法返回一个字符串,这个字符串就代表了“返回的视图”,在继承Servlet的基类的service方法中去处理,通过一个约定去判断是客户端跳转还是服务器端跳转,在客户端跳转的字符串上增加“redirect:”;
6.最后的优化:封装请求参数成为一个对象,这里涉及的知识:1.Map<String,String[]> params = req.getParameterMap();2.通过beansUtil这个工具类进行对象的封装
package itat.zttc.shop.util;import java.lang.reflect.InvocationTargetException;import java.util.Map;import java.util.Set;import javax.servlet.http.HttpServletRequest;import org.apache.commons.beanutils.BeanUtils;public class RequestUtil {public static Object setParam(Class clz,HttpServletRequest req) {Map<String,String[]> params = req.getParameterMap();Set<String> keys = params.keySet();Object o = null;try {o = clz.newInstance();for(String key:keys) {String[] vv = params.get(key);//如果元素的值的长度大于1,表示获取的应该是一个数组if(vv.length>1) {BeanUtils.copyProperty(o, key, vv);} else {BeanUtils.copyProperty(o, key, vv[0]);}}} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}return o;}}
0 0
- servlet实现MVC
- 用Servlet实现MVC模式
- 简单的servlet mvc实现
- jsp+servlet实现mvc结构示例
- MVC模式(JSP + Servlet +Tomcat)实现
- 通过servlet实现mvc(drp)
- Servlet是如何实现MVC的
- Servlet是如何实现MVC的
- JSP+Servlet+JavaBean实现MVC模式练习
- Servlet是如何实现MVC的
- HTML+Servlet+JavaBean实现MVC模式
- Servlet是如何实现MVC的
- Servlet是如何实现MVC的
- Servlet+Jsp+JavaBean实现MVC架构
- JSP + JavaBean + Servlet实现MVC设计模式
- 使用JSP、Servlet、JavaBean实现MVC
- servlet+mvc实现分页显示列表页
- Servlet MVC
- ewgwg
- BZOJ 3208 花神的秒题计划Ⅰ 记忆化搜索
- 移植U-Boot之BootLoader简介
- MYSQL
- 贪心初步-A - Doing Homework again
- servlet实现MVC
- jquery获取select中的值
- 关于Junit不能运行问题
- 数据结构(C++) Data Structure learning——第一章 线性表(SEC01)
- iOS block的用法
- 【BZOJ】【P1307&P1318】【题解】【max_element】
- 抽象类 接口
- CodeForces 55D Beautiful numbers (数位DP)
- c++开源库大全