以前做过一个登录程序,是用JSP+JavaBean完成的,最大的问题,JSP文件内容太多了。

1. VO

2. DBC

3. DAO

3.1 impl

3.2 proxy

4. Factory

5. Servlet

MVC模式开发中,注意客户端验证和服务器端都要验证,以防直接访问servlet页面。

客户端验证:

<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ page import="java.util.*"%>
<html>
<head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
<body>
<script language="javascript">
function validate(f){
if(!(/^\w{5,15}$/.test(f.userid.value))){
alert("用户ID必须是5~15位!") ;
f.userid.focus() ;
return false ;
}
if(!(/^\w{5,15}$/.test(f.userpass.value))){
alert("密码必须是5~15位!") ;
f.userpass.focus() ;
return false ;
}
}
</script>
<%
request.setCharacterEncoding("GBK") ;
%>
<%
List<String> info = (List<String>) request.getAttribute("info") ;
if(info != null){ // 有信息返回
Iterator<String> iter = info.iterator() ;
while(iter.hasNext()){
%>
<h4><%=iter.next()%></h4>
<%
}
}
%>
<form action="LoginServlet" method="post" onSubmit="return validate(this)">
用户ID:<input type="text" name="userid"><br>
密&nbsp;&nbsp;码:<input type="password" name="userpass"><br>
<input type="submit" value="登陆">
<input type="reset" value="重置">
</form>
</body>
</html>

服务器端验证:

package org.lxh.mvcdemo.servlet;
import org.lxh.mvcdemo.vo.*;
import org.lxh.mvcdemo.factory.*; import java.sql.*;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class LoginServlet extends HttpServlet{
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
String path="login.jsp";
String userid=req.getParameter("userid");
String userpass=req.getParameter("userpass");
List<String> info=new ArrayList<String>();
if(userid==null||"".equals(userid)){
info.add("用户id不能为空!");
}
if(userpass==null||"".equals(userpass)){
info.add("密码不能为空!");
}
if(info.size()==0){
User user=new User();
user.setUserid(userid);
user.setPassword(userpass);
try{
if(DAOFactory.getIUserDAOInstance().findLogin(user)){
info.add("用户登录成功,欢迎"+user.getName()+"光临!");
}else{
info.add("用户登录失败,错误的用户名和密码!");
}
}catch(Exception e){
e.printStackTrace();
}
}
req.setAttribute("info",info);
req.getRequestDispatcher(path).forward(req,resp);
}
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
this.doGet(req,resp);
}
}

JSP页面应该只包含如下代码:

1. 接收属性,接收从servlet过来的属性

2. 判断语句,判断传到jsp中的属性是否存在

3. 输出内容,使用迭代或者VO

4. jsp页面唯一允许导入的包只能是java.util包,即 集合的包

一个好的jsp页面最好不导入任何一个开发包

总结:

1. 明白MVC实际的开发作用,以及JSP,Servlet,DAO各个部分的作用,JSP只是负责显示,Servlet只是负责接收参数,调用JavaBean,并进行跳转的操作。

Servlet程序开发--实例操作:MVC设计模式应用的更多相关文章

  1. Servlet程序开发-Helloworld

    D:\Workspace\WEB-INF\classes下新建HelloServlet.java文件: package org.lxh.servletdemo ; import java.io.* ; ...

  2. Servlet开发-----基础及MVC设计模式

    一.Servlet介绍   Servlet本身只是普通的Java类,只有当容器为他创建了ServletConfig和ServletContext时才成为了一个Servlet:   Servlet简单的 ...

  3. Servlet程序开发--WEB开发模式(Mode I, Mode II)

    Mode I: 就是在开发中,将显示层,控制层,数据层的操作统一交给JSP或JavaBean来进行处理. 客户端通过访问JSP,调用里面的JavaBean,而通过JavaBean调用数据库,在Java ...

  4. iOS开发中的MVC设计模式

    我们今天谈谈cocoa程序设计中的 模型-视图-控制器(MVC)范型.我们将从两大方面来讨论MVC: 什么是MVC? M.V.C之间的交流方式是什么样子的? 理解了MVC的概念,对cocoa程序开发是 ...

  5. Servlet程序开发--Servlet 与 表单

    servlet程序: doPost方法时为了防止表单提交时post方式的问题.否则只能处理get请求 package org.lxh.servletdemo ; import java.io.* ; ...

  6. Servlet程序开发--Servlet简介

    使用java语言开发的服务器端程序,可以生成动态web页,运行在服务器端,由服务器调用执行,是一种按照servlet标准开发的类. 先有servlet,后有jsp,jsp骨子里依然是servlet. ...

  7. C++ MFC应用程序开发实例

    MFC:微软基础类(Microsoft Foundation Classes),同VCL类似,是一种应用程序框架,随微软Visual C++ 开发工具发布.作为Application Framewor ...

  8. Servlet程序开发-- 过滤器

    3种servlet:简单Servlet,过滤Servlet,监听Servlet 1. 简单Servlet:是作为一种程序所必须的开发结构保存下来的. 2. 过滤Servlet:过滤器使用的不是Http ...

  9. Servlet程序开发-- Servlet生命周期

    生命周期是一个程序的存在周期,受容器管理,所以容器决定生命周期. 生命周期包括 加载,初始化,服务,销毁,卸载 5个部分 加载:第一次使用的时候加载 初始化:init方法, 失败的话,直接卸载,如果成 ...

随机推荐

  1. oracle导入导出数据库

    oracle导出dmp文件: 开始->运行->输入cmd->输入 exp user/password@IP地址:1521/数据库实例 file=文件所在目录 (如:exp user/ ...

  2. CGridCtrl在MFC中的使用(一)

    CGridCtrl控件是开源的,可在CodePlex和CodeProject上搜索找到,是VC++中用于显示表格数据的控件.基本功能包括:表格显示,单元格的编辑,单元格颜色设置,鼠标事件的响应,单元格 ...

  3. numpy中的matrix矩阵处理

    numpy模块中的矩阵对象为numpy.matrix,包括矩阵数据的处理,矩阵的计算,以及基本的统计功能,转置,可逆性等等,包括对复数的处理,均在matrix对象中. class numpy.matr ...

  4. 自定义控件之--继承控件(圆形TextView)

    师从郭大,自学于心,继承控件无疑就是继承自现有控件,保持继承的控件的属性并进行必要的扩展.   比如下面这个自定义控件,它就保持了TextView的属性,并对TextView的外观进行必要的修改该来适 ...

  5. HDU 5828 Rikka with Sequence

    好久没写线段树了,这题作为一个回味.. 第一种操作的话,就是一个延迟标记. 第二种操作可以暴力更新下去,但是有一个优化,如果某区间内所有值都是一样的,或者最大值和最小值相差1,那么到此结束,不要继续往 ...

  6. 解题的小问题(C++)

    1.判断一个数是否为整数  if(m==(int)m) 2.#include <bits/stdc++.h>using namespace std;int main(){    int n ...

  7. Python中pip安装问题解决

    用国内镜像通过pip安装python的一些包,有时会出现安装失败, 为什么总是失败?自己操作老标准了,这么简单的几个小步骤还老是出错,不由得让我怀疑是否是撞墙了,可是又懒得买vpn去翻~~一墙,无法代 ...

  8. hdu_5029_relief grain(树链剖分)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5029 题意:给你一个树,然后给你两点,将这两点之间的点涂上颜色,问涂色最多的那个颜色是什么,如果数量相 ...

  9. 开始制作国产的 scratch

    首先分析下API和数据格式: https://api.scratch.mit.edu/proxy/featured  GET   23.235.37.162:443 返回数据与对应栏目: commun ...

  10. codeforce div2 C 树状数组

    http://codeforces.com/contest/362 题目大意:给你一个序列,用冒泡排序法让他变为非递减的序列最少需要几次.在冒泡交换之间,你有一个swap操作,该swap操作是交换任意 ...