使用J2EE经典登陆验证小项目说明MVC模型编程

2015-03-13  来源:本站原创  分类:J2EE开发  人气:1 

本项目基于MVC架构来设计模型,MVC包括3个基本部分,分别是Model(模型),View(视图)和Controller(控制器)。JSP只负责显示表单内容,下面给出MVC模型下的流程图:

使用J2EE经典登陆验证小项目说明MVC模型编程

在MVC模型下,JSP的功能被简化了,使用了Servlet来充当控制器,而不是在JSP里面就设定了逻辑业务模块,所以JSP只是负责显示结果的功能。如果按以前的Java Web编程设计,在JSP中进行接收参数和判断还有跳转等功能会使用到大量的Java代码,这样就会使得后期对页面的维护工作非常困难。然而,Servlet本身就是一个Java文件,这样使用Servlet来接收参数,逻辑判断和页面跳转等功能是非常合适的。

事实上,Servlet在MVC设计模型中,负责了所有的业务逻辑并且通过JavaBean来操作数据库,进行数据逻辑处理以及决定显示页面。

通过分层的思想,使得程序执行起来更加清晰,各层只是负责自己的功能,不会出现混乱的情况,而且如果后期的维护工作中需要对程序进行增加功能等都是个非常方便的,因此MVC模型非常适合在中小Jave Web项目中使用,下面通过一个经典的Java Web项目--登陆页面的验证来说明MVC设计模型。

本项目不连接数据库,因此在进行用户登陆时,默认用户名和密码都是:liuyanbing,该项目有三个JSP模块和一个java类以及一个Servlet模块。三个JSP模块包括:

<1>登陆页面login.jsp,用于在页面显示登陆名,登陆密码的输入框,以及登陆按钮,重置按钮等基本页面元素,代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>My JSP 'login.jsp' starting page</title>

 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <!--
 <link rel="stylesheet" type="text/css" href="styles.css">
 -->
  </head>

  <body>
   <center>
     <h2>用户登录</h2>
     <form action="loginConfirm/WebRoot/login_conf.jsp" method="post">
      <table>
       <tr>
        <td>用户名:</td>
        <td><input type="text" name="uname"></td>
       </tr>
       <tr>
        <td>密&nbsp;&nbsp;码:</td>
        <td><input type="password" name="upassword"></td>
       </tr>
       <tr>
        <td colspan="2">
        <input type="submit" value="登陆">
        <input type="reset" value="重置">
        </td>
       </tr>
      </table>
     </form>
   </center>
  </body>
</html>

<2>登陆成功页面:login_success.jsp:该JSP用于用户登陆成功后显示信息,在该页面中添加了对request对象范围内login属性的判断,当该属性存在并且属性值为true时才能显示用户登陆成功,否则跳转到登陆页面。这是为了保证在Tomcat测试下,不会出现不经过登陆验证就可以直接跳转到登陆成功页面。代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>My JSP 'login_success.jsp' starting page</title>

 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <!--
 <link rel="stylesheet" type="text/css" href="styles.css">
 -->
  </head>

  <body>
     <center>
      <%
       if(request.getAttribute("login")!=null&&request.getAttribute("login").equals("true")){
      %>
       <h2>登陆成功</h2>
      <%
       }else{
      %>
      <jsp:forward page="login.jsp"></jsp:forward>
      <%
       }
      %>
     </center>
  </body>
</html>

<3>登陆失败页面:login_failure.jsp,该页面用户当用户等登陆信息错误时跳转的页面。这里没有像登陆成功那样设置了request对象范围内的验证。代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>My JSP 'login_failure.jsp' starting page</title>

 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <!--
 <link rel="stylesheet" type="text/css" href="styles.css">
 -->
  </head>

  <body>
     <center>
      <h2>登录失败</h2>
     </center>
  </body>
</html>

<4>登陆信息获取类:LoginCheak.java,在Web项目下的src中新建了一个LoginCheck.java类,用于获取用户在登陆页面中输入的用户名和密码,并且对信息进行验证,将最后的结果以波尔型传递给登陆信息确认类(LogionConf.java)。代码如下:

public class LoginCheck {

 public boolean isLogin(String name,String password){

  if("liuyanbing".equals(name)&&"liuyanbing".equals(password)){

   return true;

  }else{

   return false;

 }

}

<5>登陆信息确认类:LogionConf.java。该类作为本项目的Servlet,成为整个项目的控制器,在该类中继承了HttpServlet类,重写了doGet()和doPost()两个方法,使用request对象和response对象对整个表单的请求进行验证,并返回相应操作的响应结果。代码如下:

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginConf extends HttpServlet{
 public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
  String name=request.getParameter("uname");
  String password=request.getParameter("upassword");

  LoginCheck lc=new LoginCheck();
  if(lc.isLogin(name, password)){
   request.setAttribute("login", "true");
   request.getRequestDispatcher("login_success.jsp").forward(request, response);
  }else{
   request.getRequestDispatcher("login_failure.jsp").forward(request, response);
  }
 }

 public void doPost(HttpServletRequest request,HttpServletResponse response){

 }
}

编写好代码后,对项目进行部署,首先比如修改的就是WEB-INF目录下的web.xml,对Servlet进行配置,具体的配置信息如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
 xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>LoginConf</servlet-name>
    <servlet-class>LoginConf</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>LoginConf</servlet-name>
    <url-pattern>/servlet/LoginConf</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

配置好Servlet信息后,启动Tomcat服务器,进行项目测试,具体测试如下:

使用J2EE经典登陆验证小项目说明MVC模型编程

使用J2EE经典登陆验证小项目说明MVC模型编程

使用J2EE经典登陆验证小项目说明MVC模型编程

相关文章
  • 使用J2EE经典登陆验证小项目说明MVC模型编程 2015-03-13

    本项目基于MVC架构来设计模型,MVC包括3个基本部分,分别是Model(模型),View(视图)和Controller(控制器).JSP只负责显示表单内容,下面给出MVC模型下的流程图: 在MVC模型下,JSP的功能被简化了,使用了Servlet来充当控制器,而不是在JSP里面就设定了逻辑业务模块,所以JSP只是负责显示结果的功能.如果按以前的Java Web编程设计,在JSP中进行接收参数和判断还有跳转等功能会使用到大量的Java代码,这样就会使得后期对页面的维护工作非常困难.然而,Serv

  • JS简单实现登陆验证附效果图 2013-11-24

    实现登陆验证的方法有很多,在本文为大家详细介绍下使用js是如何做到的,下面有个不错的示例还有运行截图,喜欢的朋友可以尝试操作下 源代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Conte

  • C#身份证验证小例子 2014-02-27

    C#身份证验证小例子,需要的朋友可以参考一下 private string CheckCidInfo(string cid) { string[] aCity = new string[] { null, null, null, null, null, null, null, null, null, null, null, "北京", "天津", "河北", "山西", "内蒙古", null, null,

  • PHP采集.模拟登陆论坛小程序 2010-06-08

    PHP采集.模拟登陆论坛小程序 set_time_limit(0); //cookie保存目录 $cookie_jar = '/tmp/cookie.tmp'; /*函数 ------------------------------------------------------------------------------------------------------------*/ //模拟请求数据 function request($url,$postfields,$cookie_ja

  • 综合介绍Simple登陆验证组件(login)的使用 2011-04-13

    关于simple 登陆验证组件如何使用,很多用户并不太了解,因为没有login组件,也就无法入门simple ,login组件也是大家登陆simple最先使用的. (一)流程介绍 1). 注册simple帐号,下面是注册的url http://simpleframework.net/regist.html 当然用户注册也是基于组件实现的,后续介绍. 2). 登陆simple网站 http://simpleframework.net/login.html 介绍的就是这个. Simple 的登陆验证

  • JSP和Servlet连接数据库 登陆验证ResultSet.getString("power")空指针问题 2012-03-24

    今天在做一个用户登陆验证时,出现了ResultSet方法getString("power")空指针问题 我再客户端输入用户名和密码链接上数据库验证是否正确,并返回此用户的权限power(admin/ user),,发现当我输入客户端输入的用户时中文时,服务器验证后 时: public String getUserByNameAndPwd(String userName, String password) { String power = null; String sql = "

  • 利用ASIHTTPRequest 实现一个简单的登陆验证 2012-07-16

    今天给大家带来一个简单的登陆验证,用的是ASIHttpRequest 这个开源类库,使用的方法很简单,从网上下载下来以后,添加到项目中,并添加一下这些框架. 下面上代码 [cpp] view plain copy // // ViewController.h // NetDemo // // Created by zhouhaifeng on 12-6-6. // Copyright (c) 2012年 zhouhaifeng. All rights reserved. // #import <

  • Spring Security3.1登陆验证 2013-07-31

    一.前言 在上一篇http://blog.csdn.net/k10509806/archive/2011/04/28/6369131.aspx文 章中,提到的MyUserDetailServiceImpl获取用户权限,在用户没有登陆的时候,Spring Security会让我们自动跳转到默认的登陆界面,但在实际应用绝大多数是用我们自己的登陆界面的,其中就包括一些我们自己的逻辑,比如验证码.所以本 人又研究一下,终于摸清了一些如何配置自己的登陆界面的办法.在这里献丑了. 二.Spring Secu

  • JSP中的登陆验证解决 2015-02-12

    在写系统中缺少不了登陆注册环节,那么怎样过滤那些没有登陆的用户访问系统呢,当然是采用session啦!首先要写一个session验证的jsp文件. 登陆成功后在相应代码下添加session session.setAttribute("isLogin", "true"); 将下来是写sessioncheck.jsp文件: <% String isLogin = (String)session.getAttribute("isLogin");

  • Struts2学习笔记--Struts2登陆验证项目 2015-03-27

    为项目添加Struts2支持,用的是struts-2.1.6版本的Struts2 Struts2的struts-2.1.6的下载链接,在我的百度网盘里面有 http://pan.baidu.com/s/1bn8PANl 在下载好的Struts2目录的lib下找到下面的jar包,复制到项目的WEB-INF下的lib中 配置struts.xml文件,在项目src目录下新建struts.xml文件,配置如下代码 <?xml version="1.0" encoding="UT

  • 用MVC模型引导你的WEB设计思路 2015-02-17

    作者的blog:http://blog.csdn.net/oyiboy 习惯于过程式的开发,一直向往着面向对象.无奈半路出家人,没有一点内力基础,看了一大堆面向对象的书也只是看得一头雾水.对于MVC的概念也是偶然了解到的,感觉能和WEB开发结合起来让项目面向对象化.以下是我一点点心得. 先介绍一下MVC的概念: MVC(Model-View-Controller),即把一个应用的输入.输出.处理流程按照Model.View.Controller的方式进行分离,这样一个应用被分成三个层--模型层.

  • ASP.NET MVC模型绑定 2014-11-08

    模型绑定(Model Binding)特性使用请求数据来创建强类型对象,以此简化控制器的动作.Jess Chadwick在MSDN上的一篇文章中深入探索了该特性,并研究了复杂的场景,包括缺省模型绑定器不满足要求时如何定制. ASP.NET MVC模型绑定是什么?它让下面这段代码: public ActionResult Create() { var product = new Product() { AvailabilityDate = DateTime.Parse(Request["avail

  • 简单的spring mvc 异步登陆验证 2012-08-23

    login.jsp页面表单 <form name="oForm" method="post" action="login.do?method=validate"> <table> <span>用户名:</span><input name="staffName" type="text" class="inputbox2" /> &

  • asp+Ajax简单客户登陆验证 2015-04-02

    服务器端操作方便之处我就不吹了,地球人都知道,它最烦莫过于页面刷新,头都被刷晕了,而且他在刷新的时候,还触发服务器端的事件(解决方案:http://skylaugh.cnblogs.com/archive/2006/06/05/418010.html),现在Ajax的出现,他们的结合是发展的必然! 一.介绍一下Ajax在Asp.Net中的基本使用 1.在工程中引入Ajax.dll文件. Ajax.dll实现XmlHttpRequest请求服务器的实现细节..net项目中,添加上对其的引用,就可以

  • Joomla3 二次开发 增加discuz的登陆验证方式 2013-12-27

    这个与密码验证相关的文件的位置是 (注意是Joomla3.x 其它版本暂时没研究) : JOOMLA/plugins/authentication/joomla/joomla.php 首先要把discuz的ucenter_members表的数据 导入到 Joomla的users表 具体的自己做吧 关于密码的格式 我的处理方式是把 discuz的拼凑成 Joomla那种字符串的 : $uc$/password/salt 这种样式 其中password跟salt都是discuz的数据 Joomla关

  • PHP用户名和密码登陆验证代码 2014-05-15

    登陆页面:Login.php页面 ------------------------------------------------- <script language="javascript"> function RefreshImage(id){ document.getElementById(id).src ='im.php?'+Math.random(1); } function ver(){ var yan=document.getElementById("

  • 记录:前端用户登陆验证 2014-10-02

    登陆页面login.php session_start(); error_reporting(0); require_once ('include.php'); //未解决的问题:能匹配用户名,可是不能匹配密码. // 导致结果:知道用户名,任意密码都能登陆 ?> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title&

  • java之登陆验证 2015-05-05

    首先给大家抱歉,最近比较忙没有更新博客,家里有点喜事:比较忙加上工作原因没有给大家分享:今天给大家分享一段 首先在登陆页面判断是否登录成功,登陆成功了则把登陆成功的信息放如session中,在login界面中加上这一段 if ("login".equals(command)) { String userId = request.getParameter("userId"); String password = request.getParameter("p

  • 第一桶 从C到C++ 第六碗 陈老C演迭代开发 潘小P学渐进编程(之一) 2013-11-07

    系列文章目录索引:<小P成长记 透过C++看人生> "今天早上阳光明媚啊,"老C在教研室门口深呼吸. "嗯,东花园显得很漂亮啊--"小P应声道,两人走过东花园,来到教研室,准备妥当后,坐在小P桌前. "好,我们今天先不评论你的代码内容,而是重新来写这个代码."老C不好意思说小P的代码太烂以至于无法评审,所以决定另起炉灶,"然后我们拿新写的这个版本与原来的版本做比较." "也好."小P同意. &q

  • MVC模型 2013-08-16

    MVC MVC可以帮助确保帮助实现程序最大程度的可重用性.各MVC元素彼此独立运作,通过分开这些元素,可以构建可维护,可独立更新的程序组建. 在iOS开发中MVC的机制被使用的淋漓尽致,并且我觉得在iOS上写程序,充分理解iOS的MVC模式,有助于我们程序的组织合理性,相反,我们不遵守MVC的一些约定,程序是可以写的,但就等着受苦了. 下面是我们的一个总结,cocoa忠实于MVC,所以理解cocoa的MVC是我们关键的开始,希望这些能使你明白一些. C对M:API C对V:Outlet V对C: