Java Web快速入门——第6讲

本文介绍了一个基于MVC模式的简单登录与注册功能实现案例,详细讲解了登录功能的界面、功能和Servlet设计,以及注册功能的具体实现步骤,包括创建数据库表、编写UserBean中的添加方法和Servlet中的控制逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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、测试
    编译、启动服务器,然后运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值