1.servlet的方法分发
2020-04-05 07:23
417 查看
@Slf4j @WebServlet("/user/*") // 就是想把方法分发到 register 和 login 那么怎么解决 public class UserServlet extends BaseServlet { private UserService userService = new UserServiceImpl(); private static final String USER_STATE = "Y"; private ResultInfo info = new ResultInfo(); /** * 用户注册功能 */ public void register(HttpServletRequest request, HttpServletResponse response) throws IOException, InvocationTargetException, IllegalAccessException { } /** * 用户登录功能 */ public void login(HttpServletRequest request, HttpServletResponse response) throws InvocationTargetException, IllegalAccessException, IOException { } }
user/register
user/login 如果实现了分发到方法中去 ,那么就可以少写 servlet 也方便了代码维护需要
** * 方法增强 */ @Slf4j public class BaseServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) { //完成方法分发 //1.获取请求路径 user/add String uri = req.getRequestURI(); log.info( "当前请求uri:{}", uri ); //2.获取方法名称 String methodName = uri.substring( uri.lastIndexOf( '/' ) + 1 ); //3.获取方法对象Method //谁调用我?我代表谁 UserServlet的对象cn.yiyayiya.travel.web.servlet.UserServlet@4903d97e //log.info( "当前为{}对象进行访问", this ); try { //获取方法 Method method = this.getClass().getMethod( methodName, HttpServletRequest.class, HttpServletResponse.class ); //4.执行方法 //暴力反射 //method.setAccessible(true); method.invoke( this, req, resp ); } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { e.printStackTrace(); } } /** * 直接将传入的对象序列化为json,并且写回客户端 * * @param obj 传入的对象 */ public void writeValue(HttpServletResponse response, Object obj) throws IOException { response.setContentType( "application/json;charset=utf-8" ); PrintWriter writer = response.getWriter(); JSON.writeJSONString( writer, obj ); writer.close(); } /** * 将传入的对象序列化为json,返回 * * @param obj 传入的对象 * @return */ public String writeValueAsString(Object obj) { return JSON.toJSONString( obj ); } }
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- servlet请求分发到不同的servlet方法中
- jsp+servlet+javabean实现数据分页方法完整实例
- Java搭建servlet时doGet方法中文乱码问题
- JSP和servlet中变量声明的方法
- angularjs发送post请求,servlet无法用getParameter(name)获取的解决方法,亲测有效
- Servlet在web.xml中的注册(配置)(Servlet3.0以上版本可以用注解方法)
- 原生servlet项目启动自动加载一个方法
- Servlet学习笔记(Servlet生命周期&开发Servlet的方法)
- HttpServletRequest常用获取URL的方法
- Servlet和JSP中关于重定向的方法
- servlet跳转页面的几种方法
- jsp + Servlet 备份MySQL数据库的方法
- Servlet的init()方法在什么时候执行
- 用idea创建web项目,servlet response 等出错的原因(jsp中内置对象方法无法被解析的解决办法)
- servlet层调用biz业务层出现浏览器 500错误,解决方法 dao数据访问层 数据库Util工具类都可能出错 通过新建一个测试类复制代码逐步测试查找出最终出错原因
- servlet 获取资源相关方法
- myeclipse重命名servlet之后跳转该servlet出现404错误的解决方法
- springmvc中获得HttpServletRequest request方法(org.springframework.web.context.request.RequestContextList)
- spring mvc 默认配置文件 rest-servlet.xml 修改 方法 You have named the DispatcherServlet "rest," so by defau
- servlet中service() doGet() doPost() 方法