`

Java Web快速入门——第6讲

阅读更多

1、分析登录功能

   界面:登录界面index1.jsp;登录成功的界面login_success.jsp。
   功能:UserBean的login方法完成登录的判断。
   Servlet:LoginServlet.java
      (1)接收用户输入的用户名和口令(2)调用UserBean的login方法进行判断(3)根据方法的返回值选择界面响应。

2、MVC模式

    M表示模型,主要表示系统中的功能处理部分。例如,上面的UserBean就是一个模型,描述用户信息以及相关功能。
    V表示视图,表示系统中与人进行交互的部分。例如,上面的index1.jsp和login_success.jsp。
    C表示控制器,建立模型与视图之间的关联关系。例如,上面的LoginServlet.java。
       输入界面直接调用控制器,控制器接收用户在输入界面上输入的信息,控制器把信息传递给模型,调用模型的方法,方法会给控制器返回一个值,控制器根据这个值选择输出界面对用户响应。
    MVC模式把系统的每一个功能都分解成这个3个部分。然后分别实现。

3、采用MVC模式实现注册功能

    一般先考虑V,包括输入界面和输出界面,对于注册功能来说,输入是注册界面,输出是注册成功或者失败的界面,通常使用JSP文件。
    接下来考虑M,功能如何实现,对于注册功能来说,需要把用户提交的信息写到数据库中。需要在UserBean中编写添加用户的方法。
    考虑C,如何协调M和V。需要编写Servlet,在doGet或者doPost方法中主要完成:接收输入;调用UserBean的方法;选择界面响应。

4、创建注册用的表

create table usertable2
(
   username varchar(10) primary key,
   userpass varchar(10),
   sex char(2),
   fav varchar(20),
   degree varchar(8),
   comment varchar(100),
   email varchar(30)
)

5、V部分

   采用原来的register.jsp和success.jsp。

6、M部分
  
   在UserBean中添加方法,add方法。方法代码如下:
   public boolean add(){
      // 定义变量
      Connection con = null;
      PreparedStatement stmt = null;
      String driverClass = "sun.jdbc.odbc.JdbcOdbcDriver";
      String url = "jdbc:odbc:bookstore";
      String sql = "insert into usertable2 values(?,?,?,?,?,?,?)";
      boolean success = true;

      try{
         // 第一步:加载驱动
         Class.forName(driverClass);
         // 第二步:建立连接
         con = DriverManager.getConnection(url,"","");
         // 第三步:创建语句对象
         stmt = con.prepareStatement(sql);
         // 第四步:对SQL语句中参数赋值
         stmt.setString(1,username);
         stmt.setString(2,userpass);
         stmt.setString(3,sex);
         stmt.setString(4,fav);
         stmt.setString(5,degree);
         stmt.setString(6,comment);
         stmt.setString(7,email);
         // 第五步:执行SQL语句
         int n = stmt.executeUpdate();
         // 执行没有结果集返回的SQL语句使用executeUpdate方法,方法的返回值是整数,表示操作成功的记录数
         if(n==0)
            success = false;
      }catch(Exception e){
         success = false;
         System.out.println(e.getMessage());
      }finally{
         try{ stmt.close(); }catch(Exception ee){}
         try{ con.close(); }catch(Exception ee){}
      }
      return success;
   }

7、C部分
    编写Servlet,完成添加的控制。控制器的代码如下:
package servlet;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

import bean.*;

public class AddUserServlet extends HttpServlet
{
  public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException
  {
        // 请求中采用的编码方式是8859_1,当前的编码是gb2312,需要转换
        request.setCharacterEncoding("gb2312");

        // 第一句话:获取用户输入的信息
        String username = request.getParameter("username");

        String userpass1 = request.getParameter("userpass1");

        String sex = request.getParameter("sex");

        // 因为允许多选,所以结果有可能是多个,应该使用数组接收。
        String fav[] = request.getParameterValues("fav");
        String favStr = "";
        for(int i=0;i<fav.length;i++)
        {
           favStr += fav[i]+";";
        }

        String degree = request.getParameter("degree");

        String comment = request.getParameter("content");

        String email = request.getParameter("email");

        // 第二句话:调用JavaBean,创建对象、初始化、然后调用方法
        UserBean user = new UserBean();
        user.setUsername(username);
        user.setUserpass(userpass1);
        user.setSex(sex);
        user.setFav(favStr);
        user.setDegree(degree);
        user.setEmail(email);
        user.setComment(comment);

        boolean b = user.add();

        // 第三句话:向页面传递信息
        if(b)
            request.setAttribute("info","注册成功!");
        else
            request.setAttribute("info","注册失败!");

        // 第四句话:转向响应界面
        RequestDispatcher rd = request.getRequestDispatcher("success.jsp");
        rd.forward(request,response); // 完成跳转

/*
        if( username.equals("zhangsan") && userpass.equals("zhangsan") )
        {
           RequestDispatcher rd = request.getRequestDispatcher("success.jsp");  // 跳转到成功的页面
           rd.forward(request,response); // 完成跳转
        }else
        {
           RequestDispatcher rd = request.getRequestDispatcher("index1.jsp");  // 跳转到登录页面
           rd.forward(request,response); // 完成跳转
        }
*/
  }

  public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException
  {
     doGet(request,response);
  }

}
    之后对Servlet进行配置,在web.xml中添加如下代码:
   <servlet>
      <servlet-name>addUser</servlet-name>
      <servlet-class>servlet.AddUserServlet</servlet-class>
   </servlet>

   <servlet-mapping>
      <servlet-name>addUser</servlet-name>
      <url-pattern>/addUser</url-pattern>
   </servlet-mapping>

   需要修改register.jsp中的form的属性action:
           <form action="addUser" method="post" name="form1">
8、测试
    编译、启动服务器,然后运行。

分享到:
评论

相关推荐

    Java Web快速入门——全十讲

    ### Java Web快速入门——全十讲 #### 一、Java与Web开发的融合:JavaEE标准框架 在探讨Java Web开发之前,我们首先要理解Java在Web领域的定位。Java不仅仅是一种编程语言,它还是一套完整的生态系统,适用于各种...

    Java_Web快速入门——全十讲

    以上是对“Java_Web快速入门——全十讲”的部分知识点进行了详细的总结,这些知识点涵盖了 Java Web 技术的基础概念、核心技术和实践应用,对于初学者来说是非常宝贵的参考资料。接下来的几讲会继续深入探讨更高级的...

    JSP快速入门教程——全十讲

    **第六讲:JSP生命周期和页面转换** JSP在服务器端经历编译、实例化、初始化、服务和销毁五个阶段。了解这些阶段有助于优化性能和解决可能出现的问题。同时,本讲还将讲解JSP如何转换成Servlet。 **第七讲:JSP错误...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    第6章 打造无脚本的JSP页面 ——EL与JSTL标签库 6.1 本章学习任务 6.1.1 本章学习任务 6.1.2 实例开发任务 6.2 EL与ISTL简介 6.2.1 什么是EL 6.2.2 什么是JSTL 6.3 EL表达式的应用 6.3.1 EL的基本语法. 6.3.2 EL的...

    ASP.NET4入门经典——涵盖C#和VB.NET(第6版)

    ### ASP.NET4 入门经典——涵盖C#和VB.NET(第6版) #### ASP.NET4简介 ASP.NET4是Microsoft推出的一种用于构建动态Web应用程序的技术框架,它为开发人员提供了一个强大的平台来创建高性能、高可靠性的Web应用。与...

    《Java高手真经:Java Web高级开发技术》读书笔记模板.pptx

    * 第6课:实体Bean(Entity Bean)——Java持久化JPA + 第一个实体Bean实例——建立与数据库的连接 + 实例管理器EntityManager——执行数据库更新 + 控制实体Bean的生命周期 * 第7课:实体关系映射(ORM) + 单...

    深入体验Java Web开发内幕

    5.8 思考与实践 第6章 HttpServletRequest的应用  6.1 HttpServletRequest简介  6.2 获取请求行的相关信息  6.3 获取网络连接信息  6.4 获取请求头信息  6.5 浏览器传递参数信息的细节  ...

    《java web编程宝典-十年典藏版》 源码

    《Java Web编程宝典——十年典藏版》是一本深入探讨Java Web开发的权威书籍,其源码提供了丰富的实例,帮助读者深入理解并实践相关技术。这本书覆盖了从基础到高级的Java Web开发各个方面,包括Servlet、JSP、Java...

    重磅!《Go Web编程实战派从入门到精通》随书源码开源啦,Go语言-Web-goWebActualCombat.zip

    《Go Web编程实战派从入门到精通》是一本专注于Go语言在Web开发领域的专著,其开源的随书源码库名为"Go语言-Web-goWebActualCombat",压缩包内的主要内容是goWebActualCombat-master目录,这代表了一个完整的Go语言...

    云应用开发 ——Google App Engine & Google Web Toolkit入门指南

    ### 云应用开发 ——Google App Engine & Google Web Toolkit入门指南 #### 第1章 应该了解下 ##### 1.1 云基本知识 云计算是一种通过互联网提供按需计算资源和服务的方式,包括网络、服务器、存储、应用程序和...

    JAVA入门教程21天学通JAVA2第三版

    ### JAVA入门教程21天学通JAVA2第三版——关键知识点解析 #### 一、JAVA入门书籍推荐 - **《Java语言》**:适合初学者,全面覆盖Java基础语法及面向对象的基本概念。 - **《Thinking in Java》**:虽然内容深入且...

    Java基础入门教程

    还会介绍如何编写并运行第一个Java程序——经典的"Hello, World!"示例。 3. **JAVA基本程序实践**:在理论知识的基础上,这部分将深入到实际编程中,涵盖类和对象的概念,这是面向对象编程的基础。学习者会了解如何...

    Java语言程序设计教程(Java 7)——入门与提高篇06

    第6章介绍了几个Java的高级应用,包括多线程、网络编程和GUI编程。多线程,介绍Java如何对多线程提供支持,以及如何使用Java编写多线程应用;网络编程,介绍如何通过HTTP协议访问Web应用,如何通过Socket编程实现C/S...

    JSF入门必读——JSF入门基础

    JavaScript Server Faces(JSF)是Java平台上用于构建Web应用程序的一种框架,它旨在简化Web开发,尤其是在处理用户界面和服务器端逻辑交互方面。JSF的核心设计理念是通过组件模型、事件驱动和声明式编程来抽象出...

    从零开始——Java基础培训教程

    【Java基础培训教程】是为初学者设计的一套详尽的学习资源,涵盖了从入门到进阶的各个环节。在这个教程中,我们将深入理解Java语言的基本概念,掌握编程技巧,并熟悉常用的开发工具,如Eclipse、NetBeans和Struts。...

    java+web开发教程

    在“Java Web开发教程——入门与提高篇(JSP+Servlet)”这个教程中,你将系统学习这些知识点,逐步掌握如何使用Java进行Web开发,建立起从零到一的实战能力。无论是对HTTP协议的理解,还是对Java Web组件的运用,都...

    Eclipse Web开发从入门到精通(实例版)

    #### 第6章 Web开发实例——学生成绩管理系统的改进 介绍了如何在Eclipse中开发JSP、Servlet、Filter和Listener,以及配置web.xml文件,最终将应用打包成WAR文件并部署到应用服务器。这一系列实例覆盖了Web开发的...

    java基础知识详解 Java入门必看 Java面试题集锦

    这份资料集主要涵盖Java基础知识、初学者入门指南以及常见的Java面试题,旨在帮助学习者系统地理解和掌握Java的核心概念。 首先,Java基础知识是理解任何Java程序的基础。这包括: 1. **Java环境搭建**:学习如何...

    java编程 入门第一步 jdk安装 路径增加 第一个java范例

    本文将详细讲解Java编程的“第一步”——JDK的安装、环境变量配置以及编写并运行你的第一个Java程序。 首先,我们来了解一下JDK(Java Development Kit)。JDK是Oracle公司提供的Java开发工具包,包含了编译Java源...

Global site tag (gtag.js) - Google Analytics