servlet的简单映射
来源:互联网 发布:it课程体系 编辑:程序博客网 时间:2024/05/21 21:46
- BaseServlet.java(实现封装的servlet类,提供给不同的子类servlet继承)
package web;import java.io.IOException;import java.lang.reflect.Method;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import annotation.MethodAnnotation;/** * 封装servlet的顶层操作,根据注解映射,找到对应的方法,并执行操作 * @author facebook * */public class BaseServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); invoke(request,response); } /** * 执行指定的方法 * @param request * @param response * @throws IOException */ protected void invoke(HttpServletRequest request, HttpServletResponse response) throws IOException{ Class<?> clz = this.getClass(); int count=0; boolean flag = true; String method = request.getParameter("method"); Method[] methods = clz.getDeclaredMethods(); for(Method m : methods){ if(m.isAnnotationPresent(MethodAnnotation.class)){ MethodAnnotation methodAnnotation = m.getAnnotation(MethodAnnotation.class); if(methodAnnotation.method().equals(method)){ try { m.invoke(this, request,response); } catch (Exception e) { e.printStackTrace(); } flag = true; break; }else{ flag = false; } }else{ count++; } } if(!flag){ response.getWriter().write("<script>alert('没有找到相应的操作,请查看method中的参数是否配置出错!')</script>"); return; } if(count==methods.length){ response.getWriter().write("<script>alert('没有添加任何方法映射!')</script>"); return; } }}
- UserServlet.java(用于测试的servlet)
package web;import java.io.IOException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import annotation.MethodAnnotation;@WebServlet("/UserServlet")public class UserServlet extends BaseServlet { private static final long serialVersionUID = 1L; @MethodAnnotation(method="queryList") public void queryList(HttpServletRequest request, HttpServletResponse response){ try { response.getWriter().write("<script>alert('你调用了查询方法!......queryList')</script>"); } catch (IOException e) { e.printStackTrace(); } } @MethodAnnotation(method="saveObject") public void saveObject(HttpServletRequest request, HttpServletResponse response){ try { response.getWriter().write("<script>alert('你调用了保存方法!......saveObject')</script>"); } catch (IOException e) { e.printStackTrace(); } } @MethodAnnotation(method="delObject") public void delObject(HttpServletRequest request, HttpServletResponse response){ try { response.getWriter().write("<script>alert('你调用了删除方法!......delObject')</script>"); } catch (IOException e) { e.printStackTrace(); } } @MethodAnnotation(method="findObject") public void findObject(HttpServletRequest request, HttpServletResponse response){ try { response.getWriter().write("<script>alert('你调用了单个对象的查询方法!.....findObject')</script>"); } catch (IOException e) { e.printStackTrace(); } }}
-MethodReflact.java(注解类,实现方法的映射配置类)
package annotation;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;/** * 方法注解映射,映射调用的方法 * @author facebook * */@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.METHOD})public @interface MethodAnnotation { String method() default "";}
0 0
- servlet的简单映射
- servlet映射的简单配置
- 关于Servlet的映射
- servlet的映射机制
- servlet的映射路径
- Servlet的映射路径
- JSP 中的Servlet的映射
- 默认的servlet映射url
- Servlet映射的匹配原则
- servlet的注册和映射
- 简单的消息映射
- servlet映射
- 简单的SERVLET
- 简单的servlet程序
- 简单的servlet实例
- 一个简单的Servlet
- 简单的servlet监听器
- Servlet的简单使用
- Android Activity界面切换添加动画特效
- 利用ScrollView实现布局自动滚动
- java中的值传递和引用传递问题
- 自己js写的分页小工具供大家参考
- PreferenceActivity详解
- servlet的简单映射
- java基础13:I/O
- 在EditText中插入表情图片 (CharacterStyle&SpannableString)
- 74. Search a 2D Matrix
- ASP.Net Ajax框架 UpdatePanel控件 局部刷新
- 布局技巧:使用ViewStub
- Creating Android live wallpaper
- 旋转ImageView和TextView的效果实现
- RGB接口波形