基于MVC模式实现的登录和分页效果的小系统

上一篇的小系统是用MV模式实现的,这种模式基于model1结合java class,实现了界面和模型的分离。但是有一些不足之处:

1 JSP技术上主要是作界面显示的,但是login.jsp调用了java class模型,完成对用户的验证。

2.welcome.jsp是用于显示用户信息(数据)的,但是它除了显示数据,还调用了java class模型,代码的优雅性荡然无存,也不利于将来的分工开发。

因此,有必要对其进行一些改善,学习JSP之前应该对servlet有一些了解,我们知道,servlet技术处理页面之间的跳转是最快捷和方便的,因此MVC模式产生了,引入了控制器controllerC),这里的控制器就是servlet。控制器本身不会去完成业务逻辑,它主要是去调用模型,完成对数据的处理。

MVC模式强制性的使应用程序的输入、处理和输出分开。从而应用程序被分为三个核心部件:模型、试图、控制器。她们各自处理自己的任务。

MVC模式的处理过程:首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后调用模型来处理用户的请求并返回数据,最后控制器用相应的视图显示模型返回数据,并通过浏览器呈现给用户。JSP页面应该是调用Servlet而不是java class

M:模型,主要由java class来做,也可以是javabeanejb等。

V:视图,由JSP来做。

C:控制器,由Servlet来做。

      

       利用MVC模式可以对MV模式进行改进,将LoginCl.jsp页面和welcome.jsp中数据处理部分由servlet来完成。Welcome.jsp页面只显示数据结果。

       先理一下思路:

首先用户登录系统,提交数据后交给控制器LoginClServlet,控制器调用模型UserbeanCl对数据进行处理:(1)对用户信息进行验证。(2)由request对象将参数和要让welcome.jsp显示的数据传出去。验证成功后方传递数据结果和参数,否则跳转回登陆页面。

然后用户登录进来进入welcome.jsp页面,显示信息分页的第一页,用户可以点击下面的首页、上一页、页码、下一页、尾页。用户点击后,welcome.jsp页面调用控制器UserClServlet,控制器调用模型UserbeanCl对业务进行处理,通过request对象接受和重新设置参数,再转发到welcome.jsp页面。

 

其实比较麻烦的主要是几个参数和数据的传递,也就是pageNowpageCountresult。下面给出LoginClServlet.javaUserClServlet.java的代码。

LoginClServlet.java

package com.ly.controller;

import com.ly.model.*;

import java.io.IOException;

import java.util.ArrayList;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class LoginClServlet extends HttpServlet {

   protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

      System.out.println("Shit!***************");

      String u=request.getParameter("user");

      String p=request.getParameter("password");

      UserbeanCl ubc=new UserbeanCl();

      if(ubc.checkUser(u, p)){

         //welcome.jsp页面准备数据     

         ArrayList al=(ArrayList)ubc.getUsersByPage(1);

         int pageCount=ubc.pageCount();

         //alpageCount放到request中以便传递

         request.setAttribute("result", al);

         request.setAttribute("pageCount", pageCount+"");

         request.setAttribute("pageNow", 1+"");

         request.setAttribute("user", u);

         //转发

         request.getRequestDispatcher("welcome.jsp").forward(request,response);

        

      }else{

         request.getRequestDispatcher("login.jsp").forward(request,response);      

      }    

   } 

   protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

      doGet(request,response);

   }

}

 

 

UserClServlet.java

package com.ly.controller;

import java.io.IOException;

import java.util.ArrayList;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.ly.model.UserbeanCl;

public class UserClServlet extends HttpServlet {

       private static final long serialVersionUID = 1L;  

       protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

              System.out.println("FUXCK!*********FUXCK*****FUXCK********");

              String s_pageNow=request.getParameter("pageNow");

              String s_name=request.getParameter("user");

              UserbeanCl ubc=new UserbeanCl();

              int pageCount=ubc.pageCount();         

              try{

                     int pageNow=Integer.parseInt(s_pageNow);

                     ArrayList al=(ArrayList)ubc.getUsersByPage(pageNow);

                     request.setAttribute("result", al);

                     request.setAttribute("pageCount",pageCount+"");

                     request.setAttribute("user", s_name);

                     request.setAttribute("pageNow", pageNow+"");

                     // 重新跳转回welcome.jsp

                     request.getRequestDispatcher("welcome.jsp").forward(request, response);

              }catch(Exception e){                  

                     e.printStackTrace();

              }

             

       }

       protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

             

              doGet(request,response);

             

       }

 

}

好了,这样,只需要把前面MV模式做的LoginCl.java页面去除,然后将表单提交action改为”LoginClServlet”,前提是你要讲web.xml文件中映射位置设置好,welcome.jsp页面中跳转页面将”welcome.jsp”改为”UserClServlet.jsp”

这样,将welcome.jsp中的参数接收改好就可以运行了,祝你成功!

 

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值