`
touchinsert
  • 浏览: 1289873 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

ServletMyEclipse中实现简单登陆和注册的全部过程

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

整体的结构:

---》src中的包和java类

--->Webroot下的内容

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

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

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

packagecn.csdn.web.domain;

importjava.sql.Blob;

importjava.util.Date;

importjava.sql.Timestamp;

publicclassUser{

privateIntegerid;

privateStringusername;

privateStringuserpass;

privateStringsex;

privateIntegerage;

privateTimestamprdate;

privateDatebirth;

privateDoublesalary;

privateBlobphoto;

publicUser(){

super();

//TODOAuto-generatedconstructorstub

}

publicUser(Integerid,Stringusername,Stringuserpass,Stringsex,

Integerage,Timestamprdate,Datebirth,Doublesalary,Blobphoto){

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;

}

publicIntegergetId(){

returnid;

}

publicvoidsetId(Integerid){

this.id=id;

}

publicStringgetUsername(){

returnusername;

}

publicvoidsetUsername(Stringusername){

this.username=username;

}

publicStringgetUserpass(){

returnuserpass;

}

publicvoidsetUserpass(Stringuserpass){

this.userpass=userpass;

}

publicStringgetSex(){

returnsex;

}

publicvoidsetSex(Stringsex){

this.sex=sex;

}

publicIntegergetAge(){

returnage;

}

publicvoidsetAge(Integerage){

this.age=age;

}

publicTimestampgetRdate(){

returnrdate;

}

publicvoidsetRdate(Timestamprdate){

this.rdate=rdate;

}

publicDategetBirth(){

returnbirth;

}

publicvoidsetBirth(Datebirth){

this.birth=birth;

}

publicDoublegetSalary(){

returnsalary;

}

publicvoidsetSalary(Doublesalary){

this.salary=salary;

}

publicBlobgetPhoto(){

returnphoto;

}

publicvoidsetPhoto(Blobphoto){

this.photo=photo;

}

}

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

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

packagecn.csdn.web.util;

importjava.sql.Connection;

importjava.sql.DriverManager;

importjava.sql.PreparedStatement;

importjava.sql.ResultSet;

importjava.sql.SQLException;

/**

*@authorlike*

*/

publicclassJdbcUtil{

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

privatestaticConnectionconn=null;

/*URL地址*/

privatestaticfinalStringURL="jdbc:mysql://localhost:3306/登录信息?user=root&password=like&useUnicode=true&characterEncoding=UTF8";

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

publicstaticConnectiongetConn(){

if(conn==null){

/*准备驱动程序*/

/*创建连接对象*/

try{

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

conn=DriverManager.getConnection(URL);

}catch(Exceptione){

e.printStackTrace();

}

}

returnconn;

}

publicstaticvoidrelease(ResultSetrs,PreparedStatementpstm){

if(rs!=null){

try{

rs.close();

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

}

if(pstm!=null)

try{

pstm.close();

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

}

}

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

UserDao类中:

packagecn.csdn.web.dao;

importjava.io.File;

importcn.csdn.web.domain.User;

publicinterfaceUserDao{

/*登录功能*/

booleancheckUser(Stringname,Stringpass);

/*注册功能*/

booleaninsert(Usercentity);

}

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

packagecn.csdn.web.dao;

importjava.io.File;

importjava.io.FileInputStream;

importjava.sql.Connection;

importjava.sql.PreparedStatement;

importjava.sql.ResultSet;

importjava.sql.SQLException;

importcn.csdn.web.domain.User;

importcn.csdn.web.util.JdbcUtil;

publicclassUserDaoImplimplementsUserDao{

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

privateConnectionconn=null;

privatePreparedStatementpstm=null;

privateResultSetrs=null;

/*登陆*/

publicbooleancheckUser(Stringname,Stringpass){

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

booleanflag=false;

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

conn=JdbcUtil.getConn();

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

Stringsql="selectidusername,userpass,sex,age,rdate,birth,salaryfromuserwhereusername=?anduserpass=?";

try{

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

pstm=conn.prepareStatement(sql);

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

intindex=1;

pstm.setObject(index++,name);

pstm.setObject(index++,pass);

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

rs=pstm.executeQuery();

/*第七步:判断*/

if(rs.next()){

flag=true;

}

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

JdbcUtil.release(rs,pstm);

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

returnflag;

}

/*注册*/

publicbooleaninsert(Userentity){

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

booleanflag=false;

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

conn=JdbcUtil.getConn();

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

Stringsql="insertintouser(username,userpass,sex,age,rdate,birth,salary)values(?,?,?,?,?,?,?)";

try{

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

pstm=conn.prepareStatement(sql);

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

intindex=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());

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

inti=pstm.executeUpdate();

/*第七步:判断*/

if(i>0){

flag=true;

}

}catch(Exceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

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

JdbcUtil.release(rs,pstm);

returnflag;

}

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

--->UserService.java类:

packagecn.csdn.web.service;

importcn.csdn.web.dao.UserDao;

publicinterfaceUserServiceextendsUserDao{

}

--->UserServiceImpl类:

packagecn.csdn.web.service;

importjava.io.File;

importcn.csdn.web.dao.UserDao;

importcn.csdn.web.dao.UserDaoImpl;

importcn.csdn.web.domain.User;

publicclassUserServiceImplimplementsUserService{

/*封装实体操作类*/

publicstaticUserDaouDao=newUserDaoImpl();

/*登陆*/

publicbooleancheckUser(Stringname,Stringpass){

//TODOAuto-generatedmethodstub

returnuDao.checkUser(name,pass);

}

/*注册*/

publicbooleaninsert(Userentity){

//TODOAuto-generatedmethodstub

returnuDao.insert(entity);

}

}

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

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

---->登录页面;

<!DOCTYPEhtml>

<html>

<head>

<title>login.html</title>

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

<metahttp-equiv="description"content="thisismypage">

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

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

</head>

<body>

<div>

<h1>

用户登陆界面操作

</h1>

</div>

<divalign="center">

<formaction="./servlet/CheckUserServlet"method="post">

用户名:

<inputtype="text"name="uname"/>

<br/>

密码

<inputtype="password"name="upass"/>

<br/>

<inputtype="submit"value="登陆">

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

</form>

</div>

</body>

</html>

<scripttype="text/javascript">

<!--

functionregister(){

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

}

//-->

</script>

------>注册页面

<!DOCTYPEhtml>

<html>

<head>

<title>register.html</title>

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

<metahttp-equiv="description"content="thisismypage">

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

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

</head>

<body>

<divalign="center">

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

</div>

<divid="user">

<formaction="../servlet/RegisterService"nethod="post">

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

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

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

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

<inputtype="radio"name="usex"value="女">女<br/>

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

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

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

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

<inputtype="submit"name="提交"><br/>

</form>

</body>

</html>

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

------》与servlet连接

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

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

packagecn.csdn.web.servlet;

importjava.io.IOException;

importjava.io.PrintWriter;

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

importcn.csdn.web.service.UserService;

importcn.csdn.web.service.UserServiceImpl;

publicclassCheckUserServletextendsHttpServlet{

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

this.doPost(request,response);

}

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

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

request.setCharacterEncoding("UTF-8");

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

Stringuname=request.getParameter("uname");

Stringupass=request.getParameter("upass");

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

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

/*3.1声明业务对象*/

UserServiceuService=newUserServiceImpl();

/*3.2*/

booleanflag=uService.checkUser(uname,upass);

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

if(flag)

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

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

else

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

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

}

}

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

packagecn.csdn.web.servlet;

importjava.io.IOException;

importjava.io.PrintWriter;

importjava.sql.Timestamp;

importjava.text.DateFormat;

importjava.text.ParseException;

importjava.util.Date;

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

importcn.csdn.web.domain.User;

importcn.csdn.web.service.UserService;

importcn.csdn.web.service.UserServiceImpl;

publicclassRegisterServiceextendsHttpServlet{

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

this.doPost(request,response);

}

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

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

request.setCharacterEncoding("UTF-8");

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

Stringuname=request.getParameter("uname");

Stringupass=request.getParameter("upass");

Stringusex=request.getParameter("usex");

Stringuage=request.getParameter("uage");

Stringubirth=request.getParameter("ubirth");

Stringusalary=request.getParameter("usalary");

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

Integerage=Integer.parseInt(uage);

DateFormatformat=DateFormat.getDateInstance();

Datebirth=null;

try{

birth=format.parse(ubirth);

}catch(ParseExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

Doublesalary=Double.valueOf(usalary);

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

Userentity=newUser();

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

entity.setUsername(uname);

entity.setUserpass(upass);

entity.setSex(usex);

entity.setAge(age);

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

entity.setRdate(newTimestamp(System.currentTimeMillis()));

entity.setBirth(birth);

entity.setSalary(salary);

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

/*6.1创建业务对象*/

UserServiceuService=newUserServiceImpl();

/*6.2执行业务操作*/

booleanflag=uService.insert(entity);

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

if(flag)

//注册成功

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

else

//注册失败

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

}

}

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

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

packagecn.csdn.web.Junit;

importjava.io.File;

importjava.sql.Timestamp;

importjava.util.Date;

importorg.junit.Test;

importcn.csdn.web.domain.User;

importcn.csdn.web.service.UserService;

importcn.csdn.web.service.UserServiceImpl;

publicclassUserTest{

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

publicUserServiceuService=newUserServiceImpl();

/*验证登陆*/

@Test

publicvoidcheckUser(){

booleanflag=uService.checkUser("like","like");

if(flag)

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

else

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

}

/*注册*/

@Test

publicvoidinsert(){

Userentity=newUser();

entity.setUsername("kddk");

entity.setUserpass("kddk");

entity.setAge(12);

entity.setBirth(newDate());

entity.setRdate(newTimestamp(System.currentTimeMillis()));

entity.setSalary(22.0);

entity.setSex("");

booleanflag=uService.insert(entity);

if(flag){

System.out.println("ok");

}else{

System.out.println("no");

}

}

}

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

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics