关闭

JavaEE_JavaScript__前台(Jsp页面) + 后台数据处理(Servlet),与javaScript的过程的处理

标签: java eeservlet表单密码javascript
1335人阅读 评论(0) 收藏 举报
分类:

今天一直遇到一个问题,JSP利用JavaScript 函数将密码进行了清空,后台查看数据的时候,没有找到数据。


分析后的原因为:JavaScript 的代码执行的过程为提交表单之前,因为 javaScript的代码执行修改了表单数据,导致后台接收不到数据,代码如下:

<%--
version  1.0
Copyright (C), 2001-2016, yeeku.H.Lee
This program is protected by copyright laws.
Program Name:
Date: 
--%>

<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<title> 用户登录 </title>
	<meta name="website" content="http://www.crazyit.org" />
</head>
<body>
<!-- 输出出错提示 -->
<span style="color:red;font-weight:bold">
<%
if (request.getAttribute("err") != null)
{
	out.println(request.getAttribute("err") + "<br/>");
}
%>
</span>
请输入用户名和密码:
<!-- 登录表单,该表单提交到一个Servlet -->
<form id="login" method="post" action="login">
用户名:<input type="text" name="username"/><br/>
密  码:<input type="password" id="pass" name="pass"/><br/>
<input type="submit" value="登录" id="submitk"/><br/>
</form>
<script type="text/javascript">
		/* var clear = function(){
			if(document.getElementById("pass").value != null){
				//alert("清空密码");
				document.getElementById("pass").value = "";
			}
		}
		document.getElementById("submitk").onclick = clear; */
</script>
</body>
</html>

后台Servlet 代码:

package lee;

import java.io.IOException;
import java.sql.ResultSet;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * Description: <br/>
 * 网站: <a href="http://www.crazyit.org">疯狂Java联盟</a> <br/>
 * Copyright (C), 2001-2016, Yeeku.H.Lee <br/>
 * This program is protected by copyright laws. <br/>
 * Program Name: <br/>
 * Date:
 * 
 * @author Yeeku.H.Lee kongyeeku@163.com
 * @version 1.0
 */
// @WebServlet(name = "login", urlPatterns = { "/login" })
public class LoginServlet extends HttpServlet {
	// 响应客户端请求的方法
	public void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, java.io.IOException {
		String errMsg = "";
		// Servlet本身并不输出响应到客户端,因此必须将请求转发到视图页面
		RequestDispatcher rd;
		// 获取请求参数
		String username = request.getParameter("username");
		String pass = request.getParameter("pass");
		System.out.println("前台传递的密码:" + pass);
		try {
			// Servlet本身并不执行任何的业务逻辑处理,它调用JavaBean处理用户请求
			DbDao dd = new DbDao("com.mysql.jdbc.Driver",
					"jdbc:mysql://localhost:3306/liuyan", "root", "123456");
			// 查询结果集
			ResultSet rs = dd.query("select pass from user_inf"
					+ " where name = ?", username);
			if (rs.next()) {
				// 用户名和密码匹配
				System.out.println("数据库中的密码:" + rs.getString("pass"));
				// System.out.println(username + "---ssss");
				// System.out.println(pass + "---ssss");
				if (rs.getString("pass").equals(pass)) {
					// 获取session对象
					HttpSession session = request.getSession(true);
					// 设置session属性,跟踪用户会话状态
					session.setAttribute("name", username);
					// 获取转发对象
					rd = request.getRequestDispatcher("/welcome.jsp");
					// 转发请求
					rd.forward(request, response);
				} else {
					// 用户名和密码不匹配时
					errMsg += "您的用户名密码不符合,请重新输入";
				}
			} else {
				// 用户名不存在时
				errMsg += "您的用户名不存在,请先注册";
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		// 如果出错,转发到重新登录
		if (errMsg != null && !errMsg.equals("")) {
			rd = request.getRequestDispatcher("/login.jsp");
			request.setAttribute("err", errMsg);
			rd.forward(request, response);
		}
	}

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		String errMsg = "";
		// Servlet本身并不输出响应到客户端,因此必须将请求转发到视图页面
		RequestDispatcher rd;
		// 获取请求参数
		String username = req.getParameter("username");
		String pass = req.getParameter("pass");
		try {
			// Servlet本身并不执行任何的业务逻辑处理,它调用JavaBean处理用户请求
			DbDao dd = new DbDao("com.mysql.jdbc.Driver",
					"jdbc:mysql://localhost:3306/liuyan", "root", "123456");
			// 查询结果集
			ResultSet rs = dd.query("select pass from user_inf"
					+ " where name = ?", username);
			if (rs.next()) {
				// 用户名和密码匹配
				if (rs.getString("pass").equals(pass)) {
					// 获取session对象
					HttpSession session = req.getSession(true);
					// 设置session属性,跟踪用户会话状态
					session.setAttribute("name", username);
					// 获取转发对象
					rd = req.getRequestDispatcher("/welcome.jsp");
					// 转发请求
					rd.forward(req, resp);
				} else {
					// 用户名和密码不匹配时
					errMsg += "您的用户名密码不符合,请重新输入";
				}
			} else {
				// 用户名不存在时
				errMsg += "您的用户名不存在,请先注册";
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		// 如果出错,转发到重新登录
		if (errMsg != null && !errMsg.equals("")) {
			rd = req.getRequestDispatcher("/login.jsp");
			req.setAttribute("err", errMsg);
			rd.forward(req, resp);
		}
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		doGet(req, resp);
	}
}


DAO代码

package lee;

import java.sql.*;

/**
 * Description:
 * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>
 * <br/>Copyright (C), 2001-2016, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee kongyeeku@163.com
 * @version  1.0
 */
public class DbDao
{
	private Connection conn;
	private String driver;
	private String url;
	private String username;
	private String pass;
	public DbDao()
	{
	}
	public DbDao(String driver , String url
		, String username , String pass)
	{
		this.driver = driver;
		this.url = url;
		this.username = username;
		this.pass = pass;
	}
	// 下面是各个成员属性的setter和getter方法
	public void setDriver(String driver) {
		this.driver = driver;
	}
	public void setUrl(String url) {
		this.url = url;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public void setPass(String pass) {
		this.pass = pass;
	}
	public String getDriver() {
		return (this.driver);
	}
	public String getUrl() {
		return (this.url);
	}
	public String getUsername() {
		return (this.username);
	}
	public String getPass() {
		return (this.pass);
	}
	// 获取数据库连接
	public Connection getConnection() throws Exception
	{
		if (conn == null)
		{
			Class.forName(this.driver);
			conn = DriverManager.getConnection(url,username,
				this. pass);
		}
		return conn;
	}
	// 插入记录
	public boolean insert(String sql , Object... args)
		throws Exception
	{
		PreparedStatement pstmt = getConnection().prepareStatement(sql);
		for (int i = 0; i < args.length ; i++ )
		{
			pstmt.setObject( i + 1 , args[i]);
		}
		if (pstmt.executeUpdate() != 1)
		{
			return false;
		}
		pstmt.close();
		return true;
	}
	// 执行查询
	public ResultSet query(String sql , Object... args)
		throws Exception
	{
		PreparedStatement pstmt = getConnection().prepareStatement(sql);
		for (int i = 0; i < args.length ; i++ )
		{
			pstmt.setObject( i + 1 , args[i]);
		}
		return pstmt.executeQuery();
	}
	// 执行修改
	public void modify(String sql , Object... args)
		throws Exception
	{
		PreparedStatement pstmt = getConnection().prepareStatement(sql);
		for (int i = 0; i < args.length ; i++ )
		{
			pstmt.setObject( i + 1 , args[i]);
		}
		pstmt.executeUpdate();
		pstmt.close();
	}
	// 关闭数据库连接的方法
	public void closeConn()
		throws Exception
	{
		if (conn != null && !conn.isClosed())
		{
			conn.close();
		}
	}
}




2
0
查看评论

Windows7下JavaEE(jsp开发环境)快速搭建+第一个jsp程序 超详细教程

下学期就要学JavaEE了,主要的内容是jsp(Java Server Page)的开发。趁着暑假,就想先练练手。第一步要做的就是开发环境的搭建,看上去很麻烦,其实非常简单~   Step1:先从网上下载 Apache Tomcat、Java JDK、Eclipse EE   &...
  • mgsky1
  • mgsky1
  • 2016-07-22 11:07
  • 6152

html+javascript+Servlet表单前台校验,后台验证

1;html(前台)       index.html                       function Login...
  • pangqiandou
  • pangqiandou
  • 2016-11-14 18:43
  • 1218

javaee前后台之间传值的几种方式

java前后台之间传值的几种方式             自己写的代码太少,有时候前后台传值还写的不是很熟练,现在总结一下,加深下印象。 1.jquery的Ajax传值 --...
  • lk7688535
  • lk7688535
  • 2015-11-11 15:35
  • 718

前台html+ajax 后台 servlet交互

前台html+ajax 后台 servlet交互
  • cptbtptp_bcpt_dtptp
  • cptbtptp_bcpt_dtptp
  • 2016-08-08 10:56
  • 1865

超详细servlet+jdbc+html+css实现后台管理登陆

servlet+jdbc+html+css实现后台管理登陆咱们这篇文章继续上篇文章的完善。先给大家看看效果图吧! 这个简介的界面,大家可以自己去加以修改完善。 好了,开始步入正题。 这个web工程的思路是什么呢? 登陆界面点击登陆 登陆成功,跳转到登陆成功界面 登陆失败,跳转到登陆失败...
  • qq_21004057
  • qq_21004057
  • 2016-05-01 14:34
  • 11257

前台 jsp 与 后台 servlet 的数据交互问题

前沿:现在通常前后台交互的做法是 前端在jsp中 通过js 生成 div input 等 标签, 包括 里面的属性 class id value 等 , 然后 通过 Ajax 进入 servlet中 进行数据 查询 或者是走mysql 或者是走索引查询, 然后 通过json的形式 传回到 jsp 界...
  • u010310183
  • u010310183
  • 2015-01-28 15:18
  • 5202

前台给后台传图片处理方法

public int fileUpload(MultipartFile file, HttpServletRequest request) throws IOException {     String filePath = request.getSession().g...
  • weixin_38693080
  • weixin_38693080
  • 2017-10-19 13:46
  • 95

servlet传值到JSP

JSP传给servlet很容易FORM提交,及配套的, 及与这些配套的,好像很多 而html原生的更是轻松 而反过来,servlet传值给JSP就比较受局限,目前确认只有两种: 1、url方式 response.sendDirect("url?num="+num...
  • shuiyan
  • shuiyan
  • 2015-11-10 22:34
  • 866

关于servlet中前台数据后台提取功能的一点心得

用户名: 密&nbsp;&nbsp码: 简单的jsp页面,action功能对应的xml中/login   同时xml里面需要定义俩个  如下 相当于指定@WebServlet的name属性 --> login lee.Login...
  • JavaerWy
  • JavaerWy
  • 2015-11-14 16:54
  • 1259

文件上传简单案例(后台Servlet处理)

简单文件上传案例,后台Servlet演示,fileupload组件实现
  • zhoumengshun
  • zhoumengshun
  • 2017-03-27 21:59
  • 636
    个人资料
    • 访问:961288次
    • 积分:13918
    • 等级:
    • 排名:第1073名
    • 原创:353篇
    • 转载:343篇
    • 译文:0篇
    • 评论:47条
    文章分类