Servlet整合Shiro(四)中

简介: Servlet整合Shiro(四)

三.四 编写后台控制


后台类结构:


20200513113142775.png


三.四.一 跳转到登录的类


@WebServlet("/User/toLogin")
public class UserToLoginServlet extends HttpServlet{
  private static final long serialVersionUID = 1L;
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
  throws ServletException, IOException {
    doPost(req,resp);
  }
  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp)
   throws ServletException, IOException {
    req.getRequestDispatcher("/WEB-INF/pages/login.jsp").forward(req, resp);
  }
}


三.四.二 登录类


@WebServlet("/User/login")
public class UserLoginServlet extends HttpServlet{
  private static final long serialVersionUID = 1L;
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp)
   throws ServletException, IOException {
    doPost(req,resp);
  }
  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp) 
  throws ServletException, IOException {
    //找到相应的Subject
    Subject subject=SecurityUtils.getSubject();
    UsernamePasswordToken token=new UsernamePasswordToken(req.getParameter("code"),
        req.getParameter("password"));
    try{
      subject.login(token);
      boolean2Json(resp, true);
    }catch(Exception e){
      //代码为001,表示用户名或者密码错误
       map2Json(resp,"001");
    }
  }
  /**
   * 将状态返回到前台,通常是添加,删除,更新的操作,如果错误,则传入错误代码。
   * @param o
   * @param exclueds
   */
  public void map2Json(HttpServletResponse resp,String ... code){
    //指定哪些属性不需要转json
    JSONObject objMap=new JSONObject();
    if(code==null||code.length<1){
      objMap.put("status",true);
    }else{
      objMap.put("status",false);
      objMap.put("error_code",code[0]);
    }
    resp.setContentType("text/json;charset=utf-8");
    try {
      resp.getWriter().print(objMap.toString());
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
  /**
   * 传入是否成功,只返回状态
   * @param o
   * @param exclueds
   */
  public void boolean2Json(HttpServletResponse resp,boolean flag){
    //指定哪些属性不需要转json
    JSONObject objMap=new JSONObject();
    objMap.put("status",true);
    objMap.put("flag",flag);
    resp.setContentType("text/json;charset=utf-8");
    try {
      resp.getWriter().print(objMap.toString());
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}


注意,这两个Json 转换的方法是通用的,每一个需要转换的类里面都有,避免代码过多,老蝴蝶这不重复写了。


三.四.三 登录成功后跳转到主页


@WebServlet("/Main/toMain")
public class MainServlet extends HttpServlet{
  private static final long serialVersionUID = 1L;
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
  throws ServletException, IOException {
    doPost(req,resp);
  }
  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp)
   throws ServletException, IOException {
    req.getRequestDispatcher("/WEB-INF/pages/main.jsp").forward(req, resp);
  }
}


三.四.四 退出方法


@WebServlet("/User/logout")
public class UserLoginOutServlet extends HttpServlet{
  private static final long serialVersionUID = 1L;
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
  throws ServletException, IOException {
    doPost(req,resp);
  }
  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp)
   throws ServletException, IOException {
    Subject subject=SecurityUtils.getSubject();
    //退出登录
    subject.logout();
    req.getRequestDispatcher("/WEB-INF/pages/login.jsp").forward(req, resp);
  }
}


三.四.五 跳转到员工页面


@WebServlet("/User/toList")
public class UserToListServlet extends HttpServlet{
  private static final long serialVersionUID = 1L;
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
  throws ServletException, IOException {
    doPost(req,resp);
  }
  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp)
   throws ServletException, IOException {
    req.getRequestDispatcher("/WEB-INF/pages/user.jsp").forward(req, resp);
  }
}


三.四.六 员工添加


@WebServlet("/User/add")
public class UserAddServlet extends HttpServlet{
  private static final long serialVersionUID = 1L;
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp)
   throws ServletException, IOException {
    doPost(req,resp);
  }
  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp) 
  throws ServletException, IOException {
    System.out.println("执行添加的方法");
    boolean2Json(resp, true);
  }
  ...
  //json 转换的方法,具体见登录方法
}


三.四.七 员工修改


@WebServlet("/User/update")
public class UserUpdateServlet extends HttpServlet{
  private static final long serialVersionUID = 1L;
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp)
   throws ServletException, IOException {
    doPost(req,resp);
  }
  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp) 
  throws ServletException, IOException {
    System.out.println("执行修改的方法");
    boolean2Json(resp, true);
  }
}


三.四.八 员工删除


@WebServlet("/User/delete")
public class UserDeleteServlet extends HttpServlet{
  private static final long serialVersionUID = 1L;
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
  throws ServletException, IOException {
    doPost(req,resp);
  }
  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp) 
  throws ServletException, IOException {
    System.out.println("执行删除的方法");
    boolean2Json(resp, true);
  }
}


三.四.九 员工查询


@WebServlet("/User/select")
public class UserSelectServlet extends HttpServlet{
  private static final long serialVersionUID = 1L;
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
  throws ServletException, IOException {
    doPost(req,resp);
  }
  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp) 
  throws ServletException, IOException {
    System.out.println("执行查询的方法");
    boolean2Json(resp, true);
  }
}



相关文章
|
前端开发 JavaScript Java
Servlet整合Shiro实现RBAC(七)下
Servlet整合Shiro实现RBAC(七)
168 0
Servlet整合Shiro实现RBAC(七)下
|
JSON 前端开发 数据库
Servlet整合Shiro实现RBAC(七)上
Servlet整合Shiro实现RBAC(七)
157 0
Servlet整合Shiro实现RBAC(七)上
|
前端开发 Java 数据安全/隐私保护
Servlet整合Shiro(四)下
Servlet整合Shiro(四)
145 0
Servlet整合Shiro(四)下
|
JSON Java 应用服务中间件
Servlet整合Shiro(四)上
Servlet整合Shiro(四)
411 0
Servlet整合Shiro(四)上
|
3月前
|
缓存 安全 Java
Java服务器端技术:Servlet与JSP的集成与扩展
Java服务器端技术:Servlet与JSP的集成与扩展
33 3
|
3月前
|
存储 缓存 前端开发
Servlet与JSP在Java Web应用中的性能调优策略
Servlet与JSP在Java Web应用中的性能调优策略
32 1
|
3月前
|
存储 Java 关系型数据库
基于Servlet和JSP的Java Web应用开发指南
基于Servlet和JSP的Java Web应用开发指南
42 0
|
3月前
|
前端开发 安全 Java
在Java服务器端开发的浩瀚宇宙中,Servlet与JSP犹如两颗璀璨的明星,它们联袂登场,共同编织出动态网站的绚丽篇章。
在Java服务器端开发的浩瀚宇宙中,Servlet与JSP犹如两颗璀璨的明星,它们联袂登场,共同编织出动态网站的绚丽篇章。
28 0
|
5月前
|
自然语言处理 前端开发 Java
Servlet与JSP:Java Web开发的基石技术详解
【6月更文挑战第23天】Java Web的Servlet与JSP是动态网页的核心。Servlet是服务器端的Java应用,处理HTTP请求并响应;JSP则是结合HTML与Java代码的页面,用于动态内容生成。Servlet通过生命周期方法如`init()`、`service()`和`destroy()`工作,而JSP在执行时编译成Servlet。两者在MVC架构中分工,Servlet处理逻辑,JSP展示数据。尽管有Spring MVC等框架,Servlet和JSP仍是理解Web开发基础的关键。
103 12
|
5月前
|
存储 Java 关系型数据库
基于Servlet和JSP的Java Web应用开发指南
【6月更文挑战第23天】构建Java Web应用,Servlet与JSP携手打造在线图书管理系统,涵盖需求分析、设计、编码到测试。通过实例展示了Servlet如何处理用户登录(如`LoginServlet`),JSP负责页面展示(如`login.jsp`和`bookList.jsp`)。应用基于MySQL数据库,包含用户和图书表。登录失败显示错误信息,成功后展示图书列表。部署到Tomcat服务器测试功能。此基础教程为深入Java Web开发奠定了基础。
106 10