MVC设计模式(jsp提交表单到servlet进行验证)
2016-10-13 13:02
435 查看
1:VO类(与数据表进行映射)
package cn.com.mldn.mvc.vo;
public class User {
private String userid;
private String name;
private String password;
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
1:登录页面
<%@ page contentType="text/html" language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<script language="javascript">
function validate(f)
{
if(!(/^\w{5,10}$/.test(f.userid.value)))
{
alert("用户名必须是位5-10");
f.userid.focus();
return false;
}
if(!(/^\w{5,10}$/.test(f.usepass.value)))
{
alert("密码必须是位5-10");
f.usepass.focus();
return false;
}
return true;
}
</script>
</head>
<body>
<h2>用户登录程序</h2>
<%
request.setCharacterEncoding("UTF-8");
%>
<%
List<String> info=(List<String>)request.getAttribute("info");
if(info!=null)
{
Iterator<String> iter=info.iterator();
while(iter.hasNext())
{
%>
<h3><%=iter.next()%></h3>
<%
}
}
%>
<form action="<%=basePath%>LoginSevlet" method="post" onSubmit="return validate(this)">
用户ID:<input type="text" name="userid"><br>
密 码<input type="password" name="userpass"><br>
<input type="submit" value="登录">
<input type="reset" value="重置">
</form>
</body>
</html>
2:数据库连接的·类
package cn.com.mldn.mvc.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
public class DatabaseConnection {
private static String driver = "com.mysql.jdbc.Driver";
private static String url = "jdbc:mysql://127.0.0.1:3306/mydatabase";
private static String username = "root";
private static String password = "123456";
private Connection conn=null;
public DatabaseConnection()throws Exception
{
try
{
Class.forName(driver);
this.conn=DriverManager.getConnection(url,username,password);
}catch(Exception e)
{
e.printStackTrace();
}
}
public Connection getConnectoion()
{
return this.conn;
}
public void close()throws Exception
{
if(this.conn!=null)
{
try
{
conn.close();
}catch(Exception e)
{
e.printStackTrace();
}
}
}
}
3:定义DAO接口
package cn.com.mldn.mvc.dao;
import cn.com.mldn.mvc.vo.User;
public interface IUserDAO {
public boolean findlogin(User user)throws Exception;
}
4:定义DAO的真实实现类
package cn.com.mldn.mvc.dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import cn.com.mldn.mvc.dao.IUserDAO;
import cn.com.mldn.mvc.vo.User;
public class UserDAOImpl implements IUserDAO {
private Connection conn = null;
private PreparedStatement pstmt = null;
public UserDAOImpl(Connection conn) {
this.conn = conn;
}
@Override
public boolean findlogin(User user) throws Exception {
boolean flag = false;
try {
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(1));
flag = true;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (this.pstmt != null) {
try {
this.pstmt.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
return flag;
}
}
5:定义DAO代理操作类
package cn.com.mldn.mvc.dao.proxy;
import cn.com.mldn.mvc.dao.IUserDAO;
import cn.com.mldn.mvc.dao.impl.UserDAOImpl;
import cn.com.mldn.mvc.jdbc.DatabaseConnection;
import cn.com.mldn.mvc.vo.User;
public class UserDAOProxy implements IUserDAO {
private DatabaseConnection jdbc = null;
private IUserDAO dao = null;
public UserDAOProxy() {
try {
this.jdbc=new DatabaseConnection();
} catch (Exception e) {
e.printStackTrace();
}
this.dao=new UserDAOImpl(this.jdbc.getConnectoion());
}
@Override
public boolean findlogin(User user) throws Exception {
boolean flag=false;
try
{
flag=this.dao.findlogin(user);
}catch(Exception e)
{
e.printStackTrace();
}
finally
{
this.jdbc.close();
}
return flag;
}
}
6:定义DAO操作的工厂类
package cn.com.mldn.mvc.factory;
import cn.com.mldn.mvc.dao.IUserDAO;
import cn.com.mldn.mvc.dao.proxy.UserDAOProxy;
public class UserDAOFactory {
public static IUserDAO getIUserDAOInstance()
{
return new UserDAOProxy();
}
}
7:登录页面(并进行验证)
<%@ page contentType="text/html" language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<script language="javascript">
function validate(f)
{
if(!(/^\w{5,10}$/.test(f.userid.value)))
{
alert("用户名必须是位5-10");
f.userid.focus();
return false;
}
if(!(/^\w{5,10}$/.test(f.usepass.value)))
{
alert("密码必须是位5-10");
f.usepass.focus();
return false;
}
return true;
}
</script>
</head>
<body>
<h2>用户登录程序</h2>
<%
request.setCharacterEncoding("UTF-8");
%>
<%
List<String> info=(List<String>)request.getAttribute("info");
if(info!=null)
{
Iterator<String> iter=info.iterator();
while(iter.hasNext())
{
%>
<h3><%=iter.next()%></h3>
<%
}
}
%>
<form action="<%=basePath%>LoginSevlet" method="post" onSubmit="return validate(this)">
用户ID:<input type="text" name="userid"><br>
密 码<input type="password" name="userpass"><br>
<input type="submit" value="登录">
<input type="reset" value="重置">
</form>
</body>
</html>
8:定义Servlet类([b]进行数据库验证)[/b]
package cn.com.mldn.mvc.servlet;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.com.mldn.mvc.factory.UserDAOFactory;
import cn.com.mldn.mvc.vo.User;
@SuppressWarnings("serial")
public class LoginSevlet extends HttpServlet {
public void doGet(HttpServletRequest req,HttpServletResponse resp)throws ServletException, IOException
{
String path="ch09/mvc_login.jsp";
boolean flag=false;
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(userid==null||"".equals(userid))
info.add("密码不能为空");
if(info.size()==0)
{
User user=new User();
user.setUserid(userid);
user.setPassword(userpass);
try
{
if(UserDAOFactory.getIUserDAOInstance().findlogin(user))
{
info.add("用户登录成功,欢迎"+user.getName()+"光临!");
flag=true;
}
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);
}
}
9:配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
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_3_0.xsd">
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>org.lxh.servletdemo.HelloServlet</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>InputServlet</servlet-name>
<servlet-class>org.lxh.servletdemo.InputServlet</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>LifeCycleServlet</servlet-name>
<servlet-class>org.lxh.servletdemo.LifeCycleServlet</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>HttpSessionDemoServlet</servlet-name>
<servlet-class>org.lxh.servletdemo.HttpSessionDemoServlet</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>ClientRedirectDemo</servlet-name>
<servlet-class>org.lxh.servletdemo.ClientRedirectDemo</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>ServletRedirectdemo</servlet-name>
<servlet-class>org.lxh.servletdemo.ServletRedirectdemo</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>LoginSevlet</servlet-name>
<servlet-class>cn.com.mldn.mvc.servlet.LoginSevlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>InputServlet</servlet-name>
<url-pattern>/ch09/InputServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>LifeCycleServlet</servlet-name>
<url-pattern>/LifeCycleServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HttpSessionDemoServlet</servlet-name>
<url-pattern>/HttpSessionDemoServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ClientRedirectDemo</servlet-name>
<url-pattern>/ClientRedirectDemo</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ServletRedirectdemo</servlet-name>
<url-pattern>/ServletRedirectdemo</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>LoginSevlet</servlet-name>
<url-pattern>/LoginSevlet</url-pattern>
</servlet-mapping>
</web-app>
package cn.com.mldn.mvc.vo;
public class User {
private String userid;
private String name;
private String password;
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
1:登录页面
<%@ page contentType="text/html" language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<script language="javascript">
function validate(f)
{
if(!(/^\w{5,10}$/.test(f.userid.value)))
{
alert("用户名必须是位5-10");
f.userid.focus();
return false;
}
if(!(/^\w{5,10}$/.test(f.usepass.value)))
{
alert("密码必须是位5-10");
f.usepass.focus();
return false;
}
return true;
}
</script>
</head>
<body>
<h2>用户登录程序</h2>
<%
request.setCharacterEncoding("UTF-8");
%>
<%
List<String> info=(List<String>)request.getAttribute("info");
if(info!=null)
{
Iterator<String> iter=info.iterator();
while(iter.hasNext())
{
%>
<h3><%=iter.next()%></h3>
<%
}
}
%>
<form action="<%=basePath%>LoginSevlet" method="post" onSubmit="return validate(this)">
用户ID:<input type="text" name="userid"><br>
密 码<input type="password" name="userpass"><br>
<input type="submit" value="登录">
<input type="reset" value="重置">
</form>
</body>
</html>
2:数据库连接的·类
package cn.com.mldn.mvc.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
public class DatabaseConnection {
private static String driver = "com.mysql.jdbc.Driver";
private static String url = "jdbc:mysql://127.0.0.1:3306/mydatabase";
private static String username = "root";
private static String password = "123456";
private Connection conn=null;
public DatabaseConnection()throws Exception
{
try
{
Class.forName(driver);
this.conn=DriverManager.getConnection(url,username,password);
}catch(Exception e)
{
e.printStackTrace();
}
}
public Connection getConnectoion()
{
return this.conn;
}
public void close()throws Exception
{
if(this.conn!=null)
{
try
{
conn.close();
}catch(Exception e)
{
e.printStackTrace();
}
}
}
}
3:定义DAO接口
package cn.com.mldn.mvc.dao;
import cn.com.mldn.mvc.vo.User;
public interface IUserDAO {
public boolean findlogin(User user)throws Exception;
}
4:定义DAO的真实实现类
package cn.com.mldn.mvc.dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import cn.com.mldn.mvc.dao.IUserDAO;
import cn.com.mldn.mvc.vo.User;
public class UserDAOImpl implements IUserDAO {
private Connection conn = null;
private PreparedStatement pstmt = null;
public UserDAOImpl(Connection conn) {
this.conn = conn;
}
@Override
public boolean findlogin(User user) throws Exception {
boolean flag = false;
try {
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(1));
flag = true;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (this.pstmt != null) {
try {
this.pstmt.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
return flag;
}
}
5:定义DAO代理操作类
package cn.com.mldn.mvc.dao.proxy;
import cn.com.mldn.mvc.dao.IUserDAO;
import cn.com.mldn.mvc.dao.impl.UserDAOImpl;
import cn.com.mldn.mvc.jdbc.DatabaseConnection;
import cn.com.mldn.mvc.vo.User;
public class UserDAOProxy implements IUserDAO {
private DatabaseConnection jdbc = null;
private IUserDAO dao = null;
public UserDAOProxy() {
try {
this.jdbc=new DatabaseConnection();
} catch (Exception e) {
e.printStackTrace();
}
this.dao=new UserDAOImpl(this.jdbc.getConnectoion());
}
@Override
public boolean findlogin(User user) throws Exception {
boolean flag=false;
try
{
flag=this.dao.findlogin(user);
}catch(Exception e)
{
e.printStackTrace();
}
finally
{
this.jdbc.close();
}
return flag;
}
}
6:定义DAO操作的工厂类
package cn.com.mldn.mvc.factory;
import cn.com.mldn.mvc.dao.IUserDAO;
import cn.com.mldn.mvc.dao.proxy.UserDAOProxy;
public class UserDAOFactory {
public static IUserDAO getIUserDAOInstance()
{
return new UserDAOProxy();
}
}
7:登录页面(并进行验证)
<%@ page contentType="text/html" language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<script language="javascript">
function validate(f)
{
if(!(/^\w{5,10}$/.test(f.userid.value)))
{
alert("用户名必须是位5-10");
f.userid.focus();
return false;
}
if(!(/^\w{5,10}$/.test(f.usepass.value)))
{
alert("密码必须是位5-10");
f.usepass.focus();
return false;
}
return true;
}
</script>
</head>
<body>
<h2>用户登录程序</h2>
<%
request.setCharacterEncoding("UTF-8");
%>
<%
List<String> info=(List<String>)request.getAttribute("info");
if(info!=null)
{
Iterator<String> iter=info.iterator();
while(iter.hasNext())
{
%>
<h3><%=iter.next()%></h3>
<%
}
}
%>
<form action="<%=basePath%>LoginSevlet" method="post" onSubmit="return validate(this)">
用户ID:<input type="text" name="userid"><br>
密 码<input type="password" name="userpass"><br>
<input type="submit" value="登录">
<input type="reset" value="重置">
</form>
</body>
</html>
8:定义Servlet类([b]进行数据库验证)[/b]
package cn.com.mldn.mvc.servlet;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.com.mldn.mvc.factory.UserDAOFactory;
import cn.com.mldn.mvc.vo.User;
@SuppressWarnings("serial")
public class LoginSevlet extends HttpServlet {
public void doGet(HttpServletRequest req,HttpServletResponse resp)throws ServletException, IOException
{
String path="ch09/mvc_login.jsp";
boolean flag=false;
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(userid==null||"".equals(userid))
info.add("密码不能为空");
if(info.size()==0)
{
User user=new User();
user.setUserid(userid);
user.setPassword(userpass);
try
{
if(UserDAOFactory.getIUserDAOInstance().findlogin(user))
{
info.add("用户登录成功,欢迎"+user.getName()+"光临!");
flag=true;
}
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);
}
}
9:配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
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_3_0.xsd">
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>org.lxh.servletdemo.HelloServlet</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>InputServlet</servlet-name>
<servlet-class>org.lxh.servletdemo.InputServlet</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>LifeCycleServlet</servlet-name>
<servlet-class>org.lxh.servletdemo.LifeCycleServlet</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>HttpSessionDemoServlet</servlet-name>
<servlet-class>org.lxh.servletdemo.HttpSessionDemoServlet</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>ClientRedirectDemo</servlet-name>
<servlet-class>org.lxh.servletdemo.ClientRedirectDemo</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>ServletRedirectdemo</servlet-name>
<servlet-class>org.lxh.servletdemo.ServletRedirectdemo</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>LoginSevlet</servlet-name>
<servlet-class>cn.com.mldn.mvc.servlet.LoginSevlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>InputServlet</servlet-name>
<url-pattern>/ch09/InputServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>LifeCycleServlet</servlet-name>
<url-pattern>/LifeCycleServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HttpSessionDemoServlet</servlet-name>
<url-pattern>/HttpSessionDemoServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ClientRedirectDemo</servlet-name>
<url-pattern>/ClientRedirectDemo</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ServletRedirectdemo</servlet-name>
<url-pattern>/ServletRedirectdemo</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>LoginSevlet</servlet-name>
<url-pattern>/LoginSevlet</url-pattern>
</servlet-mapping>
</web-app>
相关文章推荐
- JSP中在提交表单之前,发送ajax请求进行js的验证
- 使用jsp+servlet完成一个表单验证
- 表单提交前使用属性onsubmit进行拦截验证
- 使用JavaScript进行表单提交前的验证
- JSP表单提交和ajax提交表单数据是不同的,冲突的,不能同时进行
- 用 sco.js valid 插件进行表单验证时,表单是如何提交的
- [JSP] 利用Servlet对用户名和密码进行服务器端验证
- 在表单提交前进行验证的几种方式
- JSP怎么将表单提交到对应的servlet
- 在表单提交前进行验证的几种方式整理
- JSP提交表单给Servlet路径问题
- 一个用javascript编写的表单提交的例子(包括用正则表达式对数据进行验证)
- 开发者必知的20个jQuery插件——之二用jQuery-Validation-Engine对提交表单进行验证
- jsp验证表单后再提交
- EasyUI中在表单提交之前进行验证
- 提交表单时,进行ajax验证
- jsp作业(1)--使用jsp+servlet完成一个表单验证
- Ajax技术概要复习及使用Ajax调用jsp或servlet进行异步验证
- liferay中使用jQuery Validation Engine进行ajax验证,不通过也提交表单的解决方案
- 如何在servlet中获取jsp中form表单提交的变量,以及jsp与servlet之间的数据传递