zoukankan      html  css  js  c++  java
  • 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,并进行跳转的操作。

  • 相关阅读:
    Java BEAN与EJB的区别
    Java设计模式(22)命令模式(Command模式)
    Java设计模式(21)访问模式(Visitor者模式)
    Java设计模式(20)观察者模式(Observer模式)
    Java设计模式(19)状态模式(State模式)
    Java设计模式(18)策略模式(Strategy模式)
    Java设计模式(17)解释器模式(Interpreter模式)
    Java设计模式(16)中介模式(Mediator模式)
    Java设计模式(15)备忘录模式(Memento模式)
    C# SignalR 即时通讯 聊天室
  • 原文地址:https://www.cnblogs.com/wujixing/p/4975083.html
Copyright © 2011-2022 走看看