Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 303|回复: 0

[Java框架学习]框架入门实例

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-11-5 00:00:51 | 显示全部楼层 |阅读模式
    这个例子的特点是利用Map封装表单数据和模型层的处理结果在各层中传递。先看web.xml文件:
    <?xml version="1.0" encoding="ISO-8859-1"?> <web-app 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"
    version="2.4"> <Servlet>
       <servlet-name>log4j-init</servlet-name>
       <servlet-class>example.Log4jInit</servlet-class>
       <init-param>
       <param-name>log4j</param-name>
        <param-value>WEB-INF/log4j.properties</param-value>
       </init-param>
       <load-on-startup>1</load-on-startup>
    </servlet>

    <!--控制器-->
    <servlet>
       <servlet-name>Servlet</servlet-name>
       <servlet-class>com.gd.action.GdServlet</servlet-class>
    </servlet>

    <!--拦截.do的请求-->
    <servlet-mapping>
       <servlet-name>Servlet</servlet-name>
       <url-pattern>*.do</url-pattern>
    </servlet-mapping> </web-app>

    运行图:



      一、视图层代码:
    1、index.jsp
    <%@ page contentType="text/HTML; charset=GBK"%>
    <jsp:forward page="/myApp/login.do" />

    2、welcome.jsp: <%@ page contentType="text/html; charset=GBK" %>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>欢迎使用简单的Web框架</title>
    </head> <body center>
      <H1><font color="red"> 欢迎您使用简单的Web框架 </font> </H1>
      <%@ include file="login.jsp" %> </body>
    </html> 3、login.jsp: <%@ page contentType="text/html; charset=GBK"%>
    <%@ page import="java.util.*"%> <%
      HashMap infoOut =
         (request.getAttribute("infoOut") == null) ? new HashMap() : (HashMap)request.getAttribute("infoOut");
      String msg = infoOut.get("msg") == null ? "" : (String)infoOut.get("msg");
    %>
    <html> <head>
      <title>采用简单框架实现用户登录验证</title>
    <script language=Javascript>
      function submit(target, action) {
      form1.target = target;
      form1.action.value = action;
      form1.submit();
    } function check() {
    form1.forwardJsp.value="login";
    form1.logicName.value="LoginAction";
    submit("<%="login_"+session.getId()%>","login");

    }
    </script>
    </head>
    <body leftmargin="0" topmargin="0">
      <form name="form1" action="/myApp/gd/login.do" method="post">
      <H3><font color="red"><%=msg%></font><H3>
      用户名:<input type="text" name="username" value=""><br>
      密码: <input type="text" name="password" value=""><br>
      <input type="button" name="button" value="提交" onClick="return check()">
      <input type="reset" name="button" value="重置">
      <input type="hidden" name="action" value="">
      <input type="hidden" name="forwardJsp" value="">
      <input type="hidden" name="logicName" value="">
      </form>
    <script language=Javascript>
       window.name = "<%="login_"+session.getId()%>";
    </script>
    </body>
    </html>

    4、登录成功页success.jsp <%@ page contentType="text/html; charset=GBK"%>
    <%@ page import="java.util.*"%> <%
       HashMap infoOut =
         (request.getAttribute("infoOut") == null) ? new HashMap() : (HashMap)request.getAttribute("infoOut");
       String msg = infoOut.get("msg") == null ? "" : (String)infoOut.get("msg");
    %>

    <html>
    <head> <title>采用框架实现用户注册验证</title> </head>
    <H3><font color="red"><%=msg%></font><H3> </body>
    </html>
      二、控制器代码:GdServlet.java
    1. package com.gd.action;
    2. import java.io.IOException;
    3. import java.util.Enumeration;
    4. import java.util.HashMap;
    5. import javax.servlet.RequestDispatcher;
    6. import javax.servlet.ServletException;
    7. import javax.servlet.http.HttpServlet;
    8. import javax.servlet.http.HttpServletRequest;
    9. import javax.servlet.http.HttpServletResponse;
    10. import org.apache.log4j.*;
    11. public class GdServlet extends HttpServlet{
    12.       private Logger logger = Logger.getLogger("this.GdServlet");
    13.         public void init() throws ServletException {
    14.                
    15.           }
    16.         public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
    17.                 doPost(req, res);
    18.         }
    19.         public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
    20.                 do_Dispatcher (req, res);
    21.         }
    22.         private void do_Dispatcher (HttpServletRequest req, HttpServletResponse res) {
    23.             try {
    24.                        
    25.                         String forwardJsp = (String) req.getParameter("forwardJsp");
    26.                         String logicName = (String) req.getParameter("logicName");
    27.                                          logger.info("forwardJsp = " + forwardJsp);
    28.                                               logger.info("logicName = " + logicName);
    29.                        String systemName = "";
    30.                         String ss = req.getServletPath();
    31.                      //logger.info("ss = " + ss);
    32.                         systemName = ss.split("/")[1];
    33.                      //logger.info("systemName=" + systemName);
    34.                         HashMap infoIn = getRequestToMap(req);
    35.                         Action action = (Action) Class.forName(getActionName(systemName,logicName)).newInstance();
    36.                         HashMap infoOut = action.doAction(infoIn);
    37.                         infoOut.put("systemName", systemName);
    38.                         req.setAttribute("infoOut", infoOut);
    39.                        
    40.                         forward(req, res);
    41.                 } catch (Exception e) {
    42.                         logger.info(e.toString());
    43.                 } finally {
    44.                 }
    45.     }
    46.         private HashMap getRequestToMap(HttpServletRequest req) throws Exception {
    47.                 req.setCharacterEncoding("GBK");
    48.                 HashMap infoIn = new HashMap();
    49.                 for (Enumeration e = req.getParameterNames(); e.hasMoreElements() ;) {
    50.                         String strName = (String)e.nextElement();
    51.                         String[] values = (String[]) req.getParameterValues(strName);
    52.                         if (values == null) {
    53.                             infoIn.put(strName, "");
    54.                         } else if (values.length == 1) {
    55.                                 infoIn.put(strName, values[0]);
    56.                         } else {
    57.                                 infoIn.put(strName, values);
    58.                         }
    59.                 }
    60.                 return infoIn;
    61.         }
    62.         private String getActionName(String systemName ,String actionName)  throws IOException, Exception {
    63.             if (actionName == null) {
    64.                     return "com.gd.action.GdAction";
    65.             } else {
    66.                     return "com." + systemName + ".action." + actionName;
    67.             }
    68.         }
    69.        
    70.         private void forward(HttpServletRequest req, HttpServletResponse res) throws Exception {
    71.                 HashMap infoOut = (req.getAttribute("infoOut") == null) ?
    72.            new HashMap() : (HashMap)req.getAttribute("infoOut");
    73.                 String forwardJsp = (String)infoOut.get("forwardJsp");
    74.              logger.info("forwardJsp1="+forwardJsp);
    75.                 String sendRedirectJsp = (String)infoOut.get("sendRedirectJsp");
    76.                
    77.                 if (null != sendRedirectJsp && !"".equals(sendRedirectJsp)) {
    78.                         res.sendRedirect(sendRedirectJsp);
    79.                 } else {
    80.                         RequestDispatcher rd = req.getRequestDispatcher("/jsp/" + forwardJsp+ ".jsp");
    81.                         rd.forward(req, res);
    82.                 }
    83.         }
    84.         public void destroy() {               
    85.         }
    86. }
    复制代码
    三、模型层代码
       1、要实现的接口 Action.java
    package com.gd.action; import java.util.HashMap; public interface Action {
       public HashMap doAction(HashMap infoIn);
    }

    2、LoginAction.java
    1. package com.gd.action;
    2. import java.util.HashMap;
    3. import com.gd.action.Action;
    4. public class LoginAction implements Action {
    5.         public HashMap doAction(HashMap infoIn) {
    6.                 String action = (infoIn.get("action") == null) ? "" : (String)infoIn.get("action");
    7.                 HashMap infoOut = new HashMap();
    8.                 if (action.equals(""))                              infoOut = this.doInit(infoIn);
    9.                 else if (action.equals("login"))                          infoOut = this.doLogin(infoIn);
    10.                 return infoOut;
    11.         }
    12.         /**该方法用来实现没有传入动作时要处理的内容
    13.         * @param infoIn
    14.         * @return HashMap
    15.         */
    16.         private HashMap doInit(HashMap infoIn) {
    17.                 HashMap infoOut = infoIn;
    18.                 try {
    19.                         infoOut.put("msg", "请输入用户名和密码");
    20.                 } catch(Exception e) {
    21.                         e.printStackTrace();
    22.                 } finally {
    23.                         return infoOut;
    24.                 }
    25.           }
    26.        
    27.         /**
    28.         * @param infoIn
    29.         * @return HashMap
    30.         */
    31.         public HashMap doLogin(HashMap infoIn){
    32.                 HashMap infoOut = infoIn;
    33.                 String username = (infoIn.get("username") == null) ? "" : (String)infoIn.get("username");
    34.                 String password = (infoIn.get("password") == null) ? "" : (String)infoIn.get("password");
    35.                
    36.                 try {
    37.                         //User user = (User)infoIn.getVO();
    38.                         //String username = user.getUsername();
    39.                         //String password = user.getPassword();
    40.                        
    41.                         if ("gd".equals(username) && "123456".equals(password)) {
    42.                                 infoOut.put("forwardJsp", "success");
    43.                                 infoOut.put("msg", "登录成功");
    44.                         } else if ("gd".equals(username) && !"123456".equals(password)) {
    45.                                 infoOut.put("msg", "密码错误");
    46.                         } else if (!"gd".equals(username) && "123456".equals(password)) {
    47.                                 infoOut.put("msg", "用户名错误");
    48.                         }  else if (!"gd".equals(username) && !"123456".equals(password)) {
    49.                                 infoOut.put("msg", "用户名和密码都输入错误");
    50.                         } else if ("".equals(username) && "".equals(password)) {
    51.                                 infoOut.put("msg", "请输入用户名和密码");
    52.                         }
    53.                 } catch(Exception e) {
    54.                         e.printStackTrace();
    55.                 } finally {
    56.                         return infoOut;
    57.                 }
    58.           }
    59. }
    复制代码
    3、默认的处理逻辑GdAction.java
    1. package com.gd.action;
    2. import java.util.HashMap;
    3. public class GdAction implements Action{
    4.         public HashMap doAction(HashMap infoIn) {
    5.                 String action = (infoIn.get("action") == null) ? "" : (String)infoIn.get("action");
    6.                 HashMap infoOut = new HashMap();
    7.                 if (action.equals(""))   
    8.          infoOut = this.doInit(infoIn);
    9.        
    10.                 return infoOut;
    11.         }
    12.        
    13.         /**该方法设置用户登录时页面的初始信息
    14.         * @param infoIn
    15.         * @return HashMap
    16.         */
    17.         private HashMap doInit(HashMap infoIn) {
    18.                 HashMap infoOut = infoIn;
    19.                 try {
    20.                         infoOut.put("sendRedirectJsp", "/myApp/jsp/welcome.jsp");
    21.                 } catch(Exception e) {
    22.                         e.printStackTrace();
    23.                 } finally {
    24.                         return infoOut;
    25.                 }
    26.           }
    27.        
    28.        
    29. }
    复制代码


       
         
         
          
          

            
          

            
          
         
       

      


    源码下载:http://file.javaxxz.com/2014/11/5/000051031.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-25 13:47 , Processed in 0.307615 second(s), 36 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表