Servlet程序开发--实例操作:MVC设计模式应用
以前做过一个登录程序,是用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>
密 码:<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设计模式应用的更多相关文章
- Servlet程序开发-Helloworld
D:\Workspace\WEB-INF\classes下新建HelloServlet.java文件: package org.lxh.servletdemo ; import java.io.* ; ...
- Servlet开发-----基础及MVC设计模式
一.Servlet介绍 Servlet本身只是普通的Java类,只有当容器为他创建了ServletConfig和ServletContext时才成为了一个Servlet: Servlet简单的 ...
- Servlet程序开发--WEB开发模式(Mode I, Mode II)
Mode I: 就是在开发中,将显示层,控制层,数据层的操作统一交给JSP或JavaBean来进行处理. 客户端通过访问JSP,调用里面的JavaBean,而通过JavaBean调用数据库,在Java ...
- iOS开发中的MVC设计模式
我们今天谈谈cocoa程序设计中的 模型-视图-控制器(MVC)范型.我们将从两大方面来讨论MVC: 什么是MVC? M.V.C之间的交流方式是什么样子的? 理解了MVC的概念,对cocoa程序开发是 ...
- Servlet程序开发--Servlet 与 表单
servlet程序: doPost方法时为了防止表单提交时post方式的问题.否则只能处理get请求 package org.lxh.servletdemo ; import java.io.* ; ...
- Servlet程序开发--Servlet简介
使用java语言开发的服务器端程序,可以生成动态web页,运行在服务器端,由服务器调用执行,是一种按照servlet标准开发的类. 先有servlet,后有jsp,jsp骨子里依然是servlet. ...
- C++ MFC应用程序开发实例
MFC:微软基础类(Microsoft Foundation Classes),同VCL类似,是一种应用程序框架,随微软Visual C++ 开发工具发布.作为Application Framewor ...
- Servlet程序开发-- 过滤器
3种servlet:简单Servlet,过滤Servlet,监听Servlet 1. 简单Servlet:是作为一种程序所必须的开发结构保存下来的. 2. 过滤Servlet:过滤器使用的不是Http ...
- Servlet程序开发-- Servlet生命周期
生命周期是一个程序的存在周期,受容器管理,所以容器决定生命周期. 生命周期包括 加载,初始化,服务,销毁,卸载 5个部分 加载:第一次使用的时候加载 初始化:init方法, 失败的话,直接卸载,如果成 ...
随机推荐
- iOS学习笔记(02) - 关键字 __kindof
1.__kindof:表示当前类或它的子类. 2.__kindof书写格式:放在类型前面,表示修饰这个类型. 3.__kindof优点:在调用的时候,很清楚的知道返回类型. 直接举一个例子来形容这个问 ...
- ValueStack背后的OGNL表达式
原文地址:http://blog.csdn.net/li_tengfei/archive/2010/12/25/6098134.aspx 前言: Strut2的Action类通过属性可以获得所有相关的 ...
- wordpress建站过程2——结构
开始wordpress之前,我们需要了解,wordpress的结构和调用方式. 当一个wordpress开始之后,他会读取[当前主题]的index.php.所以一旦主题切换了,它读的就是其他主题的in ...
- HDU1007--Quoit Design(平面最近点对)
Problem Description Have you ever played quoit in a playground? Quoit is a game in which flat rings ...
- UVALive 2520 Holedox Moving(BFS+状态压缩)
这个题目在比赛的时候我们是没有做出来的,但是听到他们说进制哈希的时候,感觉真的是挺高端的,于是赛后开始补题,本着我的习惯在看题解之前自己再试着写一遍,我当时存储状态的方法是string + map,我 ...
- js导入插件注意事项.txt
网上收集的答案如下:==============================================1)确认js真的被引用到2)确认js引用顺序没问题3)确认js代码里的括号等都匹配,不会 ...
- js函数大全(2)
原文地址:http://phperbar.blog.163.com/blog/static/162596182201032935815391/ 1.常规函数 javascript常规函数包括以下9个函 ...
- LeetCode OJ 202. Happy Number
Write an algorithm to determine if a number is "happy". A happy number is a number defined ...
- http response
关键词:http response header 下载文件 案例1: 访问某个链接,然后下载文件,需要特定的http头: header("Content-Type:application/z ...
- 百度,google的地理编码
1.百度的地理编码:(不支持中国以外的其它城市) http://api.map.baidu.com/geocoder/v2/?ak=E974997f80db18330f8f5c61d084a677&a ...