您的位置:首页 > 编程语言 > Java开发

Servlet在MyEclipse中简单实现(No.31)

2011-10-18 10:16 232 查看
Servlet在MyEclipse中实现简单登陆和注册的全部过程

下面是一个具体的例子,进行简单的登陆验证、注册和添加照片

整体的结构:



---》src中的包和java类



--->Webroot下的内容



---》首先建好数据库(如下)



---》然后就是在src下建cn.csdn.web.domain包和User.java

User.java中的内容为:(对数据库中的字段进行定义)

package cn.csdn.web.domain;

import java.sql.Blob;

import java.util.Date;

import java.sql.Timestamp;

public class User {

private Integer id;

private String username;

private String userpass;

private String sex;

private Integer age;

private Timestamp rdate;

private Date birth;

private Double salary;

private Blob photo;

public User() {

super();

// TODO Auto-generated constructor stub

}

public User(Integer id, String username, String userpass, String sex,

Integer age, Timestamp rdate, Date birth, Double salary, Blob photo) {

super();

this.id = id;

this.username = username;

this.userpass = userpass;

this.sex = sex;

this.age = age;

this.rdate = rdate;

this.birth = birth;

this.salary = salary;

this.photo = photo;

}

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getUserpass() {

return userpass;

}

public void setUserpass(String userpass) {

this.userpass = userpass;

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

public Integer getAge() {

return age;

}

public void setAge(Integer age) {

this.age = age;

}

public Timestamp getRdate() {

return rdate;

}

public void setRdate(Timestamp rdate) {

this.rdate = rdate;

}

public Date getBirth() {

return birth;

}

public void setBirth(Date birth) {

this.birth = birth;

}

public Double getSalary() {

return salary;

}

public void setSalary(Double salary) {

this.salary = salary;

}

public Blob getPhoto() {

return photo;

}

public void setPhoto(Blob photo) {

this.photo = photo;

}

}

-----》建立cn.csdn.web.util包和JdbcUtil.java这个类

JdbcUtil.java类:(连接数据库的操作)

package cn.csdn.web.util;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

/**

* @author like *

*/

public class JdbcUtil {

/*单例模式 创建Connection对象*/

private static Connection conn = null;

/*URL地址*/

private static final String URL="jdbc:mysql://localhost:3306/登录信息?user=root&password=like&useUnicode=true&characterEncoding=UTF8";

/*获取connection对象的静态方法*/

public static Connection getConn(){

if(conn == null){

/*准备驱动程序*/

/*创建连接对象*/

try {

Class.forName("com.mysql.jdbc.Driver");

conn = DriverManager.getConnection(URL);

} catch (Exception e) {

e.printStackTrace();

}

}

return conn;

}

public static void release(ResultSet rs, PreparedStatement pstm){

if (rs != null){

try {

rs.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

if(pstm != null)

try {

pstm.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

--->然后建立cn.csdn.web.dao包和两个java类

UserDao类中:

package cn.csdn.web.dao;

import java.io.File;

import cn.csdn.web.domain.User;

public interface UserDao {

/*登录功能*/

boolean checkUser(String name ,String pass);

/*注册功能*/

boolean insert(Usercentity);

}

----->UserDaoImpl.java类中:(这里面包括验证登陆、注册和添加图片)

package cn.csdn.web.dao;

import java.io.File;

import java.io.FileInputStream;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import cn.csdn.web.domain.User;

import cn.csdn.web.util.JdbcUtil;

public class UserDaoImpl implements UserDao {

/* 封装数据库操作属性 */

private Connection conn = null;

private PreparedStatement pstm = null;

private ResultSet rs = null;

/* 登陆 */

public boolean checkUser(String name, String pass) {

/* 第一步:声明返回值变量 */

boolean flag = false;

/* 第二步:获取连接对象 */

conn = JdbcUtil.getConn();

/* 第三步:声明sql语句 */

String sql = "select id username,userpass,sex,age,rdate,birth,salary from user where username = ? and userpass = ?";

try {

/* 第四步:根据sql语句创建预处理对象 */

pstm = conn.prepareStatement(sql);

/* 第五步:为占位符赋值 */

int index = 1;

pstm.setObject(index++, name);

pstm.setObject(index++, pass);

/* 第六步:执行查询 */

rs = pstm.executeQuery();

/* 第七步:判断 */

if (rs.next()) {

flag = true;

}

/* 第八步:释放资源 */

JdbcUtil.release(rs, pstm);

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return flag;

}

/* 注册 */

public boolean insert(User entity) {

/* 第一步:声明返回值变量 */

boolean flag = false;

/* 第二步:获取连接对象 */

conn = JdbcUtil.getConn();

/* 第三步:声明sql语句 */

String sql = "insert into user(username,userpass,sex,age,rdate,birth,salary) values(?,?,?,?,?,?,?)";

try {

/* 第四步:根据sql语句创建预处理对象 */

pstm = conn.prepareStatement(sql);

/* 第五步:为占位符赋值 */

int index = 1;

pstm.setObject(index++, entity.getUsername());

pstm.setObject(index++, entity.getUserpass());

pstm.setObject(index++, entity.getSex());

pstm.setObject(index++, entity.getAge());

pstm.setObject(index++, entity.getRdate());

pstm.setObject(index++, entity.getBirth());

pstm.setObject(index++, entity.getSalary());

/* 第六步:执行查询 */

int i = pstm.executeUpdate();

/* 第七步:判断 */

if (i >0) {

flag = true;

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

/* 第八步:释放资源 */

JdbcUtil.release(rs, pstm);

return flag;

}

----》写一个cn.csdn.web.service包和两个类

--->UserService.java类:

package cn.csdn.web.service;

import cn.csdn.web.dao.UserDao;

public interface UserService extends UserDao{

}

--->UserServiceImpl类:

package cn.csdn.web.service;

import java.io.File;

import cn.csdn.web.dao.UserDao;

import cn.csdn.web.dao.UserDaoImpl;

import cn.csdn.web.domain.User;

public class UserServiceImpl implements UserService{

/*封装实体操作类*/

public static UserDao uDao = new UserDaoImpl();

/*登陆*/

public boolean checkUser(String name, String pass) {

// TODO Auto-generated method stub

return uDao.checkUser(name, pass);

}

/*注册*/

public boolean insert(User entity) {

// TODO Auto-generated method stub

return uDao.insert(entity);

}

}

-------》因为要实现的是从页面上进行操作,所以有必要写几个网页

卸载WebRoot文件夹下的login(自己建立)文件夹中

---->登录页面;

<!DOCTYPE html>

<html>

<head>

<title>login.html</title>

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="this is my page">

<meta http-equiv="content-type" content="text/html; charset=UTF-8">

<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

</head>

<body>

<div>

<h1>

用户登陆界面操作

</h1>

</div>

<div align="center">

<form action="./servlet/CheckUserServlet" method="post">

用户名:

<input type="text" name="uname" />

<br />

密 码

<input type="password" name="upass" />

<br />

<input type="submit" value="登陆">

<input type="button" value="注册" onclick="register()">

</form>

</div>

</body>

</html>

<script type="text/javascript">

<!--

function register(){

window.location="./login/register.html";

}

//-->

</script>

------>注册页面

<!DOCTYPE html>

<html>

<head>

<title>register.html</title>

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="this is my page">

<meta http-equiv="content-type" content="text/html; charset=UTF-8">

<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

</head>

<body>

<div align="center">

<h1>用户注册界面</h1>

</div>

<div id="user">

<form action="../servlet/RegisterService" nethod="post">

用户姓名:<input type="text" name="uname"><br/>

密码:<input type="password" name="upass"><br/>

确认密码:<input type="password" name="cupass"><br/>

性别:<input type="radio" name="usex" value="男">男

<input type="radio" name="usex" value="女">女<br/>

年龄:<input type="text" name="uage"><span>必须是整型</span><br/>

<!-- 注册日期就是当前日期 -->

出生日期:<input type="text" name="ubirth"><span>格式必须是1990-10-10形式</span><br/>

薪资:<input type="text" name="usalary"><br/>

<input type="submit" name="提交"><br/>

</form>

</body>

</html>

-----》web.xml里面指向的地址因改为login.html

------》与servlet连接

------>建立cn.csdn.web.servlet包和两个java(servlet)

--->验证与servlet的连接,CheckUserServlet.java类

package cn.csdn.web.servlet;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import cn.csdn.web.service.UserService;

import cn.csdn.web.service.UserServiceImpl;

public class CheckUserServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

this.doPost(request, response);

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

/*第一步:设置编码*/

request.setCharacterEncoding("UTF-8");

/*第二步:获取请求的参数*/

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

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

/*第三步:类型转换*/

/*第四步:执行业务操作*/

/*3.1 声明业务对象*/

UserService uService = new UserServiceImpl();

/*3.2 */

boolean flag = uService.checkUser(uname,upass);

/*第五步:判断根据结果执行相应的操作*/

if(flag)

/*如果成功 重定向到success.html*/

response.sendRedirect("../login/success.html");

else

/*如果失败 重定向到success.html*/

response.sendRedirect("../login/error.html");

}

}

---->注册与servlet的连接,RegisterService.java:

package cn.csdn.web.servlet;

import java.io.IOException;

import java.io.PrintWriter;

import java.sql.Timestamp;

import java.text.DateFormat;

import java.text.ParseException;

import java.util.Date;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import cn.csdn.web.domain.User;

import cn.csdn.web.service.UserService;

import cn.csdn.web.service.UserServiceImpl;

public class RegisterService extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

this.doPost(request, response);

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

/*第一步:设置编码*/

request.setCharacterEncoding("UTF-8");

/*第二步:获取请求的参数*/

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

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

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

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

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

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

/*第三步:类型转换*/

Integer age = Integer.parseInt(uage);

DateFormat format = DateFormat.getDateInstance();

Date birth = null;

try {

birth = format.parse(ubirth);

} catch (ParseException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

Double salary = Double.valueOf(usalary);

/*第四步:创建实体对象*/

User entity = new User();

/*第五步:为实体对象的属性赋值*/

entity.setUsername(uname);

entity.setUserpass(upass);

entity.setSex(usex);

entity.setAge(age);

/*注册日期为当前日期*/

entity.setRdate(new Timestamp(System.currentTimeMillis()));

entity.setBirth(birth);

entity.setSalary(salary);

/*第六部:执行业务操作对象*/

/*6.1 创建业务对象*/

UserService uService = new UserServiceImpl();

/*6.2 执行业务操作*/

boolean flag = uService.insert(entity);

/*第七步:执行判断*/

if (flag)

//注册成功

response.sendRedirect("../login/rsuccess.html");

else

//注册失败

response.sendRedirect("../login/rerror.html");

}

}

------》建立cn.csdn.web.Junit包和测试类

---->登陆验证和注册需要开启服务器UserTest.java类:

package cn.csdn.web.Junit;

import java.io.File;

import java.sql.Timestamp;

import java.util.Date;

import org.junit.Test;

import cn.csdn.web.domain.User;

import cn.csdn.web.service.UserService;

import cn.csdn.web.service.UserServiceImpl;

public class UserTest {

/*测试Service层 创建一个seervice的对象*/

public UserService uService = new UserServiceImpl();

/*验证登陆*/

@Test

public void checkUser(){

boolean flag = uService.checkUser("like","like");

if (flag)

System.out.println("你是正确的");

else

System.out.println("你是错误的");

}

/*注册*/

@Test

public void insert(){

User entity = new User();

entity.setUsername("kddk");

entity.setUserpass("kddk");

entity.setAge(12);

entity.setBirth(new Date());

entity.setRdate(new Timestamp(System.currentTimeMillis()));

entity.setSalary(22.0);

entity.setSex("男");

boolean flag = uService.insert(entity);

if(flag){

System.out.println("ok");

}else{

System.out.println("no");

}

}

}

----》此外最重要的一点就是一定要在lib文件夹中放入mysql的jar包

-----------》》这样一个简单的servlet在MyEclipse中的应用就写好了

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: