Mvc的web应用实例分析

Login.jsp——视图部分的输入文件
success.jsp——视图部分的输出文件
failure.jsp——视图部分的输出文件
LoginBean.java——模型部分
LoginServlet.java——控制器部分
web.xml——web应用的配置文件

下面分别介绍:

1、login.jsp

该功能的输入文件,用户首先访问这个文件。主要用于输入用户名和口令。
代码如下:

<%@ page contentType="text/html;charset=gb2312"%>

<script language="JavaScript">

function isValidate(form)

{

// 得到用户输入的信息

username = form.username.value;

userpass = form.userpass.value;

// 判断用户名长度

if(!minLength(username,6))

{

alert("用户名长度小于6位!");

form.username.focus();

return false;

}

if(!maxLength(username,8))

{

alert("用户名长度大于8位!");

form.username.focus();

return false;

}

// 判断口令长度

if(!minLength(userpass,6))

{

alert("口令长度小于6位!");

form.userpass.focus();

return false;

}

if(!maxLength(userpass,8))

{

alert("口令长度大于8位!");

form.userpass.focus();

return false;

}

return true;

}

// 验证是否满足最小长度

function minLength(str,length)

{

if(str.length>=length)

return true;

else

return false;

}

// 判断是否满足最大长度

function maxLength(str,length)

{

if(str.length<=length)

return true;

else

return false;

}

</script>

<html>

<head>

<title>用户登陆</title>

</head>

<body>

<h2>用户登录</h2>

<form name="form1" action="login" method="post"

onsubmit="return isValidate(form1)">

用户名:<input type="text" name="username"> <br>

口令:<input type="password" name="userpass"><br>

<input type="reset" value="重置">

<input type="submit" value="提交"><br>

</form>

</body>

</html>

代码中提供了客户端验证功能(用户名和口令的长度为6-8位)。验证通过之后会把请求提交给控制器Servlet。

2、success.jsp

登录成功之后会跳转到这个界面,界面的代码如下:

%@ page contentType="text/html;charset=gb2312"%>

<html>

<head>

<title>登录成功</title>

</head>

<body>

<h2>${sessionScope.username}您好,欢迎登录网上书店!</h2>

</body>

</html>

代码中使用表达式语言把登录后的用户信息显示在街面上。

3、failure.jsp

登录失败后会跳转到这个界面,界面的代码如下:

<%@ page contentType="text/html;charset=gb2312"%>

<html>

<head>

<title>登录失败</title>

</head>

<body>

<h2>用户名或者口令不正确,请<a href="login.jsp">重新登录! </a></h2>

</body>

</html>

代码中提供了一个超链接,能够链接到登录界面。

4、LoginBean.java

完成登录功能,这里假设用户名和口令相等表示登录成功。

package beans;

public class LoginBean {

public boolean validate(String username,String userpass){

return username.equals(userpass);

}

}

5、LoginServlet.java

该文件完成控制,主要功能可以描述如下:

①. 从login.jsp获取用户输入的用户名和口令;
②. 创建LoginBean的对象,调用LoginBean的方法validate;
③. 根据方法返回的结果,选择success.jsp或者failure.jsp对用户响应。

完整的代码如下:

package servlets;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.*;

import javax.servlet.http.*;

import beans.*;

public class LoginServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doPost(request,response);

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

// 获取用户输入的用户ID和口令

String username = request.getParameter("username");

String userpass = request.getParameter("userpass");

// 创建模型对象

LoginBean loginBean = new LoginBean();

// 调用业务方法进行验证

boolean b = loginBean.validate(username,userpass);

// 要转向的文件

String forward;

// 如果登陆成功,把用户名写入session中,并且转向success.jsp,

// 否则转向failure.jsp

if(b){

// 获取session

HttpSession session = (HttpSession)request.getSession(true);

// 把用户名保存到session中

session.setAttribute("username",username);

// 目标转向文件是success.jsp

forward = "success.jsp";

}else{

// 目标转向文件是failure.jsp

forward = "failure.jsp";

}

// 获取Dispatcher对象

RequestDispatcher dispatcher = request.getRequestDispatcher(forward);

// 完成跳转

dispatcher.forward(request,response);

}

}

代码中把登录用户的用户信息保存在了session中,在实际应用中同样也是这样处理的。

6、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>LoginServlet</servlet-name>

<servlet-class>servlets.LoginServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>LoginServlet</servlet-name>

<url-pattern>login</url-pattern>

</servlet-mapping>

</web-app>

mvc结合web应用实例分析的更多相关文章

  1. 实例分析ASP.NET在MVC5中使用MiniProfiler监控MVC性能的方法 

    这篇文章主要为大家详细介绍了ASP.NET MVC5使用MiniProfiler监控MVC性能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 MiniProfiler ,一个简单而有效的迷你剖析器 ...

  2. autofac使用Common Serivce Locator跟随wcf,mvc,web api的实例控制

    autofac本身只提供了基本的ioc容器的功能 要想在mvc,wcf,web api中使用,除了autofac本身,还需要引入对应的包(点击对应连接可查看文档) 除此之外,使用Common Serv ...

  3. Spring Web Flow实例教程

    目录: 参考文献 购物车用例 什么情况下可以使用 Spring Web Flow? 配置 Spring Web MVC 配置 Spring Web Flow 2.0 的基础 在购物车示例应用中配置 S ...

  4. RPC原理及RPC实例分析

    在学校期间大家都写过不少程序,比如写个hello world服务类,然后本地调用下,如下所示.这些程序的特点是服务消费方和服务提供方是本地调用关系. 1 2 3 4 5 6 public class ...

  5. Asp.Net MVC及Web API框架配置会碰到的几个问题及解决方案(转)

      前言 刚开始创建MVC与Web API的混合项目时,碰到好多问题,今天拿出来跟大家一起分享下.有朋友私信我问项目的分层及文件夹结构在我的第一篇博客中没说清楚,那么接下来我就准备从这些文件怎么分文件 ...

  6. Asp.Net MVC及Web API框架配置会碰到的几个问题及解决方案

    前言 刚开始创建MVC与Web API的混合项目时,碰到好多问题,今天拿出来跟大家一起分享下.有朋友私信我问项目的分层及文件夹结构在我的第一篇博客中没说清楚,那么接下来我就准备从这些文件怎么分文件夹说 ...

  7. (转)实例分析:MySQL优化经验

    [IT专家网独家]同时在线访问量继续增大,对于1G内存的服务器明显感觉到吃力,严重时甚至每天都会死机,或者时不时的服务器卡一下,这个问题曾经困扰了我半个多月.MySQL使用是很具伸缩性的算法,因此你通 ...

  8. 转-Asp.Net MVC及Web API框架配置会碰到的几个问题及解决方案

    前言 刚开始创建MVC与Web API的混合项目时,碰到好多问题,今天拿出来跟大家一起分享下.有朋友私信我问项目的分层及文件夹结构在我的第一篇博客中没说清楚,那么接下来我就准备从这些文件怎么分文件夹说 ...

  9. 【转】Asp.Net MVC及Web API框架配置会碰到的几个问题及解决方案

    前言 刚开始创建MVC与Web API的混合项目时,碰到好多问题,今天拿出来跟大家一起分享下.有朋友私信我问项目的分层及文件夹结构在我的第一篇博客中没说清楚,那么接下来我就准备从这些文件怎么分文件夹说 ...

随机推荐

  1. SQL SERVER 服务启动失败

    好久没用SQL SERVER了.今天启动SQL,发现服务启动失败.报错例如以下:--错误发生 1069-(因为登录失败而无法启动服务.) .百度一下,解决方式例如以下: 请按下列步骤操作: 1.右键单 ...

  2. ios开发之--swift下Alamofire的使用

    1,首先使用cocoapods导入,如果有不会的同学,可以去看我写的关于cocopods使用的那篇博客 2,直接上代码: a 先看下文件结构 CommonFile.swift import UIKit ...

  3. std::unique_lock

    /*与Mutex RAII相关,方便线程上锁,相比std::lock_guard提供了更好的上锁解锁控制,反正我是没看出来也是在构造时上锁,在析构时解锁,感觉和lock_gurad大差不差都是在线程函 ...

  4. 《从零开始学Swift》学习笔记(Day 69)——Swift与Objective-C混合编程之语言

    原创文章,欢迎转载.转载请注明:关东升的博客 在Swift语言出现之前,开发iOS或OS X应用主要使用Objective-C语言,此外还可以使用C和C++语言,但是UI部分只能使用Objective ...

  5. Java之Tomcat、Dynamic web project与Servlet

    一.Tomcat配置 Conf   Config   configration   -->配置 Service.xml:用来配置Tomcat Tomcat_users.xml:用来配置Tomca ...

  6. 知问前端——html+jq+jq_ui+mySql+ajax

    **************************************************************************************************** ...

  7. SaltStack之Salt-ssh

    上一篇:SaltStack远程执行-返回MySQL 通常salt需要在客户端安装salt-minion使用salt-ssh可以在客户断主机免安装minion 在master主机安装salt-ssh y ...

  8. ZOJ 3715 Kindergarten Election

    At the beginning of the semester in kindergarten, the n little kids (indexed from 1 to n, for conven ...

  9. oracle导入导出 dmp文件

    oracle导入导出 dmp文件: 打开cmd窗口,在cmd窗口下,按照个人需要输入以下对应的命令: 1.imp 用户名/密码@网络服务名 file=XXX.dmp fromuser=XXX tous ...

  10. Content-Negotiation Header Quality Values

    HTTP: The Definitive Guide 17.3.2 Content-Negotiation Header Quality Values The HTTP protocol define ...