JSP基于MVC 用户登录的例子(JavaBean + Servlet)

 

我们来看交互图

例子一,

基于MVC 用户登录的实现(JavaBean + Servlet + JSP)

1、web.xml配置

<?xml version=”1.0″ encoding=”UTF-8″?>
<web-app version=”2.5″
xmlns=”http://java.sun.com/xml/ns/javaee”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=”http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd”>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>

<servlet>
<servlet-name>loginServlet</servlet-name>
<servlet-class>org.zxj.mvcdemo.servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>loginServlet</servlet-name>
<url-pattern>/LoginServlet</url-pattern>
</servlet-mapping>
</web-app>

 

2、User

 

package org.zxj.mvcdemo.vo;

public class User{
private String userid;
private String name;
private String password;
public void setUSerid(String userid){
this.userid = userid;
}
public void setName (String name){
this.name = name;
}
public void setPassword(String password){
this.password = password;
}
public String getUserid(){
return this.userid;
}
public String getName(){
return this.name;
}
public String getPassword(){
return this.password;
}

}

 

3、DatabaseConnection

 

package org.zxj.mvcdemo.dbc;

import java.sql.*;

public class DatabaseConnection{

private static final String DBDRIVER = “com.mysql.jdbc.Driver”;
private static final String DBURL = “jdbc:mysql://localhost:3306/zxj”;
private static final String DBUSER = “root”;
private static final String DBPASSWORD =”pf”;
private static Connection con = null;
public DatabaseConnection() throws Exception{
try{
Class.forName(DBDRIVER);
this.con = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);
}catch(Exception e){
throw e;
}
}
public Connection getConnection(){
return this.con;
}
public void close() throws Exception {
if(this.con != null){
try{
this.con.close();
}catch(Exception e){
throw e;
}
}
}
}

 

4、IUserDAO

 

package org.zxj.mvcdemo.dao;

import org.zxj.mvcdemo.vo.User;

public interface IUserDAO{
public boolean findLogin(User user) throws Exception;
}

 

5、UserDAOImpl

 

package org.zxj.mvcdemo.dao.impl;

import org.zxj.mvcdemo.vo.User;
import org.zxj.mvcdemo.dao.*;
import java.sql.*;

public class UserDAOImpl implements IUserDAO{
private Connection conn = null;
private PreparedStatement pstmt = null;
public UserDAOImpl(Connection conn){
this.conn = conn;
}
public boolean findLogin(User user) throws Exception{
boolean flag = false;
String sql = “select name from user where userid= ? and password = ?”;
this.pstmt = this.conn.prepareStatement(sql);
this.pstmt.setString(1,user.getUserid());
this.pstmt.setString(2,user.getPassword());
ResultSet rs = this.pstmt.executeQuery();
if(rs.next()){
user.setName(rs.getString(“name”));
flag = true;
}
this.pstmt.close();
return flag;
}
}

 

6、UserDAOProxy

 

package org.zxj.mvcdemo.dao.proxy;

import org.zxj.mvcdemo.vo.User;
import org.zxj.mvcdemo.dbc.*;
import org.zxj.mvcdemo.dao.*;
import org.zxj.mvcdemo.dao.impl.*;
import java.sql.*;

public class UserDAOProxy implements IUserDAO{
private DatabaseConnection dbc = null;
private IUserDAO dao = null;
private PreparedStatement pstmt = null;
public UserDAOProxy(){
try{
this.dbc = new DatabaseConnection();
}catch(Exception e){
e.printStackTrace();
}
this.dao = new UserDAOImpl(dbc.getConnection());
}
public boolean findLogin(User user) throws Exception{
boolean flag = false;
try{
flag = this.dao.findLogin(user);
}catch(Exception e){
throw e;
}finally{
this.dbc.close();
}
return flag;
}
}

 

7、DAOFactory

 

 

package org.zxj.mvcdemo.factory;

import org.zxj.mvcdemo.dao.*;
import org.zxj.mvcdemo.dao.proxy.*;
public class DAOFactory{
public static IUserDAO getIUserDAOInstance(){
return new UserDAOProxy();
}
}

 

8、LoginServlet

package org.zxj.mvcdemo.servlet;

import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.zxj.mvcdemo.factory.*;
import org.zxj.mvcdemo.vo.*;

public class LoginServlet extends HttpServlet{
public void doGet(HttpServletRequest req, HttpServletResponse res) 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,res);
//RequestDispatcher rd = null;
//rd = req.getRequestDispatcher(path);
//rd.forward(req,res);

}
public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException,IOException {
doGet(req,res);
}
}

 

9、Login.jsp

 

 

 

<%@ page language=”java” contentType=”text/html” pageEncoding=”GBK” %>
<%@ page import=”java.util.*”%>
<html>
<head>
<title>登录</title>
<meta http-equiv=”content-type” content=”text/html;charset=gbk”>
</head>

<body>
<%
request.setCharacterEncoding(“GBK”);
List<String> info = (List<String>)request.getAttribute(“info”);
if(info != null){
Iterator<String> iter = info.iterator();
while(iter.hasNext()){
out.println(iter.next());
}
}
%>
<form action=”LoginServlet” method=”post”>
用户:<input type=”text” name=”userid” /> <br />
密码:<input type=”password” name=”userpass” /><br />
<input type=”submit” value=”登录” />
<input type=”reset” value=”重置” />
</body
</html>

例子二,

第一:JSP:由页面指令和HTML组成的查询界面query_condention.jsp,也就是咱们现在的html页和asp页面类似。

<%@ page language="java" contentType="text/html;charset=GBK"%>
<html>
 <head>
  <title>学生信息</title>
 </head>
 <body>
  <form action="SearchStudentServlet" method="post">
   出生日期:<input type="text" name="beginDate">至<input type="text" name="endDate">
   <input type="submit" value="查询学生">
  </form>
 </body>
</html>

第二:控制层 SearchStudentServlet用来接受客户的请求,来处理流程,调用Model(StudentManager.java),转发到要请求的后台服务器的student_list.jsp页面

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

import com.bjpowernode.exam.model.*;
import com.bjpowernode.exam.manager.*;

public class SearchStudentServlet extends HttpServlet {

 public void doGet(HttpServletRequest request, HttpServletResponse response) 
 throws ServletException, IOException {
  doPost(request, response);
 }
 
 public void doPost(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {
  
  String sBeginDate = request.getParameter("beginDate");
  String sEndDate = request.getParameter("endDate");
  
  Date beginDate = new Date();
  Date endDate = new Date();
  try {
   beginDate = new SimpleDateFormat("yyyy-MM-dd").parse(sBeginDate);
    endDate = new SimpleDateFormat("yyyy-MM-dd").parse(sEndDate);
   }catch(Exception e) {
   e.printStackTrace();  
   } 
  
  StudentManager studentManager = new StudentManagerImpl();
  List<Student> studentList = studentManager.findStudentList(beginDate, endDate);
  
  //将学生列表设置到requet范围中
  //request.setAttribute("student_list", studentList);
  
  //转发,转发是在服务器端转发的,客户端是不知道的
  //request.getRequestDispatcher("/student_list.jsp").forward(request, response);
  
  
  //将studentList放到session中
  HttpSession session = request.getSession();
  session.setAttribute("student_list", studentList);
  
  //重定向,不会共享request
  //以下写法错误,该 "/"代表了8080端口
  //response.sendRedirect("/student_list.jsp");
  response.sendRedirect(request.getContextPath() + "/student_list.jsp");
 }
}

第三 :student_list.jsp页面接收数据形成html,返回到浏览器,渲染在界面上

<%@ page language="java" contentType="text/html;charset=GBK"%>
<%@ page import="java.util.*"%>
<%@ page import="java.text.*"%>
<%@ page import="com.bjpowernode.exam.model.*"%>
<%@ page import="com.bjpowernode.exam.manager.*"%>
<html>
 <head>
  <title>学生信息</title>
  <style type="text/css">
   /*表格宽度为1px,实线,黑色*/
     table{
       border:1px solid black;  
       border-collapse:collapse;   
     }

     td {
       border:1px solid black;  
       border-collapse:collapse;   
     }
    
  </style>  
 </head>
 <body>
  <table border="1">
   <tr>
    <td>学生代码</td>
    <td>姓名</td>
    <td>性别</td>
    <td>出生日期</td>
    <td>联系电话</td>
    <td>家庭住址</td>
    <td>班级名称</td>
    <td>年龄</td>
   </tr>
   <%
    //List<Student>  studentList = (List)request.getAttribute("student_list");
    List<Student>  studentList = (List)session.getAttribute("student_list");
    for (Iterator<Student> iter=studentList.iterator(); iter.hasNext();) {
     Student student = iter.next();
   %>
   <tr>
    <td><%=student.getStudentId()%></td>
    <td><%=student.getStudentName()%></td>
    <td><%=student.getSex()%></td>
    <td><%=new SimpleDateFormat("yyyy-MM-dd").format(student.getBirthday())%></td>
    <td><%=student.getContactTel()%></td>
    <td><%=student.getAddress()%></td>
    <td><%=student.getClasses().getClassesName()%></td>
    <%
     long b = 1000L*60L*60L*24L*365L;
     long a = System.currentTimeMillis() - student.getBirthday().getTime();
    %>
    <td><%=a/b%></td>
   </tr>
   <%
    }
   %>
  </table>
 </body>
</html>

在View的student_list.jsp页面中是大量的html和java代码的混合,在查询条件界面query_condention.jsp主要是html,因为不涉及后台数据的交互.

第四:xml配置Servlet:

<?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>SearchStudentServlet</servlet-name>
  <servlet-class>SearchStudentServlet</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>SearchStudentServlet</servlet-name>
  <url-pattern>/SearchStudentServlet</url-pattern>
 </servlet-mapping>
 
</web-app>

时间: 2024-09-21 07:12:23

JSP基于MVC 用户登录的例子(JavaBean + Servlet)的相关文章

asp.net中mvc验证用户登录的例子

因此一般我都是把AcountController的相关的东西都删了,一步一步自己来重建自己的登陆模块. MVC提供了四种Filter(钩子),用于在Action执行之前或者之后,我们能够做一些事情,比如说判断有没有登录,比如说判断有没有权限. IAuthorizationFilter:在所有Filter和Action执行之前执行 IActionFilter:分别在Action执行之前和之后执行. IResultFilter:分别在Action Result执行之后和之前 IExceptionFi

jsp基于XML实现用户登录与注册的实例解析(附源码)_JSP编程

简单的基于xml做数据库的登录与注册 主题介绍:1.xml的读取和存储,主要是用到dom4j技术,(网络中的文件存储路径采用classLoader) 文件的读取和存储,写了一个工厂类 public class DocumentFactory { private static Document dom=null;//需要共享一个dom,所以需要设置为static private static String name="user.xml"; private static String fi

Asp.Mvc 2.0实现用户登录与注销功能实例讲解(2)_实用技巧

这一节讲解下ASP.MVC 2.0的用户登录与注销功能,先讲登录,后说注销.我们这个系列讲的用户登录方式都是FORM表单验证方式.在讲之前先给大家说下<%:%>的功能,<%:%>与<%=%>功能一样,用来动态输出内容.一.登录1. 建立MODEL 登录的时候,我们一般只要验证用户名和密码,还有是否保存登录COOKIE,所以我们建立一个MODEL登录类,只需包括3个字段就可以. /// <summary> /// 用户登录MODEL /// </summ

JavaWeb实现用户登录注册功能实例代码(基于Servlet+JSP+JavaBean模式)_java

下面通过通过图文并茂的方式给大家介绍JavaWeb实现用户登录注册功能实例代码,一起看看吧. 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp负责数据显示,javabean负责封装数据. Servlet+JSP+JavaBean模式程序各个模块之间层次清晰,web开发推荐采用此种模式. 这里以一个最常用的用户登录注册程序来讲解Servlet+JS

Java组件javabean用户登录实例详解_java

本文简单讲述使用javabean实现用户登录,包括用户登录,注册和退出等. 1.关于javabean JavaBean 是一种JAVA语言写成的可重用组件.为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器.JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取.众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制发现和操作这些JavaBean 的属性. 2.系统架构2.1登录用例图 2.2页面流程图 2.3系统架构图

JSP 用户登录处理界面显示空白怎么解决

问题描述 JSP 用户登录处理界面显示空白怎么解决 <%@ page language=""java"" contentType=""text/html; charset=GBK""%><%@ page import=""java.sql.*""%><html> <head> <title>业务处理页面</title>

用户登录-毕设做一个基于安卓的手机网盘,该怎么实现文件加密上传?

问题描述 毕设做一个基于安卓的手机网盘,该怎么实现文件加密上传? 总不能在服务器端随便看到上传的文件吧?还有我只做了上传下载和对服务器端文件的查询删除修改的功能,需不需要做用户登录,用户登录要用数据库做吗? 解决方案 这种数据存储做好是分段加密存储,用文件的CRC校验码做文件名,然后做个列表文件,文件中记录这个文件的一些信息,以及文件是由哪些CRC校验码的文件组成的,以后下载时根据这个文件来组合会原来的文件 这样,在服务器上不会出现很大的数据,客户端处理起来也占资源少 比如你先读取这个文件的CR

【Qt编程】基于Qt的词典开发系列&amp;lt;八&amp;gt;--用户登录及API调用的实现

在上一篇文章<调用网络API>中,我只讲述了如何直观的使用API接口以及调用API后返回的结果,本文则从程序实现的角度来实现API的调用,当然本程序的实现也是借助于扇贝网的API接口文档http://www.shanbay.com/help/developer/api/. 由API文档可知,要想调用其API,必须先注册.因此,我就注册了,账户名为nineheadedbird, 密码为123456.显然,我们要查词,首先必须得登录该账户.如果用浏览器,那就很简单,只需单纯的输入用户名和密码就可以

用jsp写的表单用户登录页面,访问mysql数据库时候 出错 ,如下图

问题描述 用jsp写的表单用户登录页面,访问mysql数据库时候 出错 ,如下图 在处理登录的时候为什么有时候出现500错误,有时候又出现找不到数据库连接,我用得mysql数据库,驱动程序也添加了的,求大神指教一下啊! 解决方案 可能数据库没连接上(因为不同数据库版本的驱动不同) 来检查你的数据库是否链接上 在你得到的Connection conn=DriverManager.getConnection(参数); 后面加一段代码 if(conn==null) System.out.println