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. C语言的代码内存布局详解

    一个程序本质上都是由 BSS 段.data段.text段三个组成的.这样的概念在当前的计算机程序设计中是很重要的一个基本概念,而且在嵌入式系统的设计中也非常重要,牵涉到嵌入式系统运行时的内存大小分配, ...

  2. laravel 配置修改及读取

    1)laravel 的所以配置文件都在根目录下的 config 目录里,直接看一个配置文件的名字就知道是做什么的了,这里不说了 2)读取配置的方法 $value = config('app.timez ...

  3. Python学习笔记5-元组Tuple

    tuple和list非常类似,但是tuple一旦初始化就不能修改,它也没有append(),insert()这样的方法.其他获取元素的方法和list是一样的 元组是用圆括号括起来的,其中的元素之间用逗 ...

  4. SqlSession接口和Executor

    mybatis框架在操作数据的时候,离不开SqlSession接口实例类的作用.可以说SqlSession接口实例是开发过程中打交道最多的一个类.即是DefaultSqlSession类.如果笔者记得 ...

  5. 写一个SingleTon,(饿最终、懒同步)

    1.饿汉式: public class SingleTon { private SingleTon(){ } private final static SingleTon instance = new ...

  6. docker使用阿里云镜像仓库

    1:阿里云docker仓库 https://dev.aliyun.com/search.html 2:进去注册帐号后,点击自己的管理中心. 3:在管理中心点击加速器,右边面板会有你的加速地址,右边面板 ...

  7. 基于 Golang 的 xls 读取类库:xls

    Golang 编写的 xls 读取类库,能够实现 xls 表格的读取功能 func (w *WorkBook) ReadAllCells() (res [][]string) { for _, she ...

  8. 160603、使用pd4ml.jar和ss_css2.jar转pdf的工具类

    注意:需要导入pd4ml.jar和ss_css2.jar import java.awt.Insets;import java.io.BufferedInputStream;import java.i ...

  9. Liunx新手入门必看

    安装CentOS(Linux的一个常用发行版本,互联网公司经常使用这个发行版)用到的软件: VMware_workstation_full_12.5.2.exe 虚拟机软件,虚拟机由这个软件安装.管理 ...

  10. 适配器模式(Adpater)

    一.适配器模式介绍 适配器模式:将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的类可以一起工作. 例如: NBA中的球员来自不同国家,而世界标准语言 ...