mvc结合web应用实例分析
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应用实例分析的更多相关文章
- 实例分析ASP.NET在MVC5中使用MiniProfiler监控MVC性能的方法
这篇文章主要为大家详细介绍了ASP.NET MVC5使用MiniProfiler监控MVC性能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 MiniProfiler ,一个简单而有效的迷你剖析器 ...
- autofac使用Common Serivce Locator跟随wcf,mvc,web api的实例控制
autofac本身只提供了基本的ioc容器的功能 要想在mvc,wcf,web api中使用,除了autofac本身,还需要引入对应的包(点击对应连接可查看文档) 除此之外,使用Common Serv ...
- Spring Web Flow实例教程
目录: 参考文献 购物车用例 什么情况下可以使用 Spring Web Flow? 配置 Spring Web MVC 配置 Spring Web Flow 2.0 的基础 在购物车示例应用中配置 S ...
- RPC原理及RPC实例分析
在学校期间大家都写过不少程序,比如写个hello world服务类,然后本地调用下,如下所示.这些程序的特点是服务消费方和服务提供方是本地调用关系. 1 2 3 4 5 6 public class ...
- Asp.Net MVC及Web API框架配置会碰到的几个问题及解决方案(转)
前言 刚开始创建MVC与Web API的混合项目时,碰到好多问题,今天拿出来跟大家一起分享下.有朋友私信我问项目的分层及文件夹结构在我的第一篇博客中没说清楚,那么接下来我就准备从这些文件怎么分文件 ...
- Asp.Net MVC及Web API框架配置会碰到的几个问题及解决方案
前言 刚开始创建MVC与Web API的混合项目时,碰到好多问题,今天拿出来跟大家一起分享下.有朋友私信我问项目的分层及文件夹结构在我的第一篇博客中没说清楚,那么接下来我就准备从这些文件怎么分文件夹说 ...
- (转)实例分析:MySQL优化经验
[IT专家网独家]同时在线访问量继续增大,对于1G内存的服务器明显感觉到吃力,严重时甚至每天都会死机,或者时不时的服务器卡一下,这个问题曾经困扰了我半个多月.MySQL使用是很具伸缩性的算法,因此你通 ...
- 转-Asp.Net MVC及Web API框架配置会碰到的几个问题及解决方案
前言 刚开始创建MVC与Web API的混合项目时,碰到好多问题,今天拿出来跟大家一起分享下.有朋友私信我问项目的分层及文件夹结构在我的第一篇博客中没说清楚,那么接下来我就准备从这些文件怎么分文件夹说 ...
- 【转】Asp.Net MVC及Web API框架配置会碰到的几个问题及解决方案
前言 刚开始创建MVC与Web API的混合项目时,碰到好多问题,今天拿出来跟大家一起分享下.有朋友私信我问项目的分层及文件夹结构在我的第一篇博客中没说清楚,那么接下来我就准备从这些文件怎么分文件夹说 ...
随机推荐
- Word中怎么用MathType编辑公式
现如今,用电脑办公学习已经是一个不可阻挡的潮流.而与之相应的就是需要在这些办公软件进行相应的使用,最典型的一种就是要在Word编辑公式.其实在Word中编辑公式是一个很常见的事情,虽然它很常见,但是却 ...
- Windows网络接口API函数
Windows提供了一套非常轻量级的网络函数,方便进行网络应用开发,整理出来供参考使用. The following functions are used in Windows networking: ...
- Juicer——a fast template engine
https://blog.csdn.net/yutao_struggle/article/details/79201688 当前最新版本: 0.6.8-stable Juicer 是一个高效.轻量的前 ...
- jquery与javescript的区别(一)
一.找元素: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&g ...
- poj_2559 单调栈
题目大意 给出一个柱形图中柱子的高度,每个柱子的宽度为1,柱子相邻.求出柱形图中可能形成的矩形的最大面积. 题目分析 以每个柱子(高度为h[i])为中心,向两边延展求出以该h[i]为高度的矩形的最大宽 ...
- 常问面试题:C++中sizeof的陷阱及应答
C++中sizeof是经常被问到的一个概念,比如,下面的几个关于sizeof的面试题反复出现在各大IT公司的技术面试当中,我们有必要完全理解并掌握.注:在曾经面试大公司时,我的确被问到过这样的问题. ...
- 【BZOJ2783】[JLOI2012]树 DFS+栈+队列
[BZOJ2783][JLOI2012]树 Description 在这个问题中,给定一个值S和一棵树.在树的每个节点有一个正整数,问有多少条路径的节点总和达到S.路径中节点的深度必须是升序的.假设节 ...
- 用Dialog 做自定义动画,加播放监听
final Dialog customDialog = new Dialog(this); customDialog.setTitle(R.string.attention); customDialo ...
- k8s滚动升级
为了服务升级过程中提供可持续的不中断的服务,Kubernetes 提供了rolling update机制,具体配置需要修改对应服务的yaml文件 参数解析: minReadySeconds: 100 ...
- vue通信
组件实例的作用域是孤立的. 一.父子通信 父组件通过props向下传递数据给子组件,子组件通过events给父组件发送消息. 要让子组件使用父组件的数据,我们需要通过子组件的props选项.prop是 ...