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>&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,并进行跳转的操作。

 

posted @ 2015-11-18 16:55  wujixing909  阅读(267)  评论(0编辑  收藏  举报