JSP+javabean+servlet
最近⽼师让我们给⼤⼆的学弟学妹们讲解jsp+javabean+servlet,很头疼,不知道从哪⾥下⼿,感觉⾃⼰好像也不是太懂得样⼦哈哈哈,那就写⼀篇博⽂来发表⼀下⾃⼰的看法,顺便理清思路,不能被⼤⼆的学弟学妹嘲笑,对吧!
那么什么是servlet?
Servlet 是在服务器上运⾏的⼩程序,⽤来动态的显⽰ Web 内容。这个流程⼤概就是
1. 客户端发送请求⾄服务器端;
2. 服务器将请求信息发送⾄ Servlet;
3. Servlet ⽣成响应内容并将其传给服务器。响应内容动态⽣成,通常取决于客户端的请求;
4. 服务器将响应返回给客户端。
什么是Javabean呢?
说⽩了就是类⽽已,只不过现在改了⼀个名字⽽已,之前写的时候都是⼀堆类混在⼀起,现在就是把他
们拆开,按照不同的功能放在⼀起,⼀般我们⽤四个包来区分。
1.      com.Bean包:这个包⾥⾯放的都是⼀些属性类,⼀般数据库⾥⾯有什么表,相应的就要有什么bean,当然表⾥⾯的数据在bean⾥
⾯也要全有,⽐如有⼀个Student表,表⾥⾯有id,name那么在该包下就要建⽴相应的Studentbean(Studentbean只是⼀个名字,你⾃⼰可以随便取)类,有私有变量id和name,与之对应的get和set函数。
2.      com.Dao包:这个包就是放⼀些类,类⾥⾯的函数就是⽤来对数据库进⾏操作的,例如增删改查。
3.      com.DBUtil:这包⾥⾯放的就是⽤来连接数据库的函数,在Dao函数⾥⾯直接调⽤这个就能连接数据库,代码复⽤。
4.      com.Servlet:这个包放置的就是servlet类,⽤来⽹页与后台数据的交互,下⾯讲解⼀个简单的登录界⾯JSP+javabean+Servlet.
让我们⽤程序来实现⼀下吧.这样更能很好的理解他到底是⼲嘛的。
⼀:⾸先我们需要建⽴⼀个登录界⾯,很简单只需要⼀个⽤户名username和password的⽂本输⼊框就可以了。
Login.jsp
<%@ page language="java" isErrorPage="true" pageEncoding="utf-8"%>
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" type="text/css" href="style.css"/>
</head>
<body>
<div class="container">
<section id="content">
<form action="" method="post"><!---这⾥action的地址我们先不写,⼀会配置完servlet再回来补充。--->
<h1>登录界⾯</h1>
<div>
<input type="text" placeholder="登录名" required="" id="username" name="username1"/>
</div>
<div>
<input type="password" placeholder="密码" required="" id="password" name="password1"/>
</div>
<div>
<input type="submit" value="登录"/>
<a href="#">注册</a>
</div>
</form><!-- form -->
<div class="button">
</div><!-- button -->
</section><!-- content -->
</div><!-- container -->
</body>
</html>
⼆:我们需要建⽴与之匹配的数据库,下⾯我们建⽴⼀个servlet的数据库建⽴⼀个user的表,当然只需要⽤户名和密码就⾏,类型为varchar 类型就⾏,值都为123.
三:接下来我们需要建⽴⼀个com.Bean的包,上⾯说了这个⾥⾯的数据与数据库都是⼀⼀对应的,我们给包取名为bean,将类取名为
Userbean
package bean;
public class Userbean {
private String username;//⽤户名
private String password;//密码都是与数据库匹配的,下⾯是set和get函数
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
四:接下来我们需要建⽴数据库的连接com.DBUtl,类名取名为DBUtil。
package com.DBUtil;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DBUtil
{
public static String db_url="jdbc:mysql://localhost:3306/servlet?uerUnicode=true&characterEncoding=UTF-8";
//这是连接数据库,servlet是数据库的名称,uerUnicode=true&characterEncoding=UTF-8是将字符集设置为utf-8,避免乱码。public static String db_user="root";//数据的⽤户名
public static String db_password="20153246";//数据库的密码
public static Connection getConn()//获取连接,返回Connection类型,必须设置为static这样才能在其
他类中使⽤
{
Connection conn=null;
try
{
Class.forName("sql.jdbc.Driver");//加载驱动
Connection(db_url,db_user,db_password);//连接数据库
}
catch(Exception e)
{
e.printStackTrace();
}
return conn;
}
public static void close(Statement state,Connection conn)//关闭函数
{
if(state!=null)//只有状态和连接时,先关闭状态
{
try
{
state.close();
}
catch(SQLException e)
{
e.printStackTrace();
}
}
if(conn!=null)
{
try
{
conn.close();
}
catch(SQLException e)
{
e.printStackTrace();
}
}
}
public static void close(ResultSet rs,Statement state,Connection conn)
{
if(rs!=null)//有结果集,状态和连接时,先关闭结果集,在关闭状态,在关闭连接
{
try
{
rs.close();
}
catch(SQLException e)
{
e.printStackTrace();
}
}
if(state!=null)
{
try
{
state.close();
}
catch(SQLException e)
{
e.printStackTrace();
}
}
if(conn!=null)
{
try
{
conn.close();
}
catch(SQLException e)
{
e.printStackTrace();
}
}
}
}
五:然后我们就要建⽴servlet类,建⽴⼀个com.servlet的包,建⽴⼀个Userservlet的servlet类
package com.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import dao.Userdao;
@SuppressWarnings("serial")
public class Userservlet extends HttpServlet
{
//当从jsp跳转到servlet类时,⾸先执⾏service函数(这是定理)
protected void service(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException
{
req.setCharacterEncoding("utf-8");//设置字符集,避免乱码
//获取jsp界⾯需要进⾏的操作,
String method = Parameter("method");
if(method.equals("login"))//转到login函数
{
login(req,resp);
}
}
protected void login(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException
{
req.setCharacterEncoding("utf-8");
String username = Parameter("username1");//获取jsp界⾯的username1和password1的值
String password = Parameter("password1");
}
}
六:配置servlet⽂件,⽤来实现从jsp界⾯跳转到servlet的操作。在WEB-INF下⾯建⽴.xml⽂件,取名必须为web,<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<servlet>
<servlet-name>Userservlet</servlet-name><!--servlet的别名,随便取  -->
<!--servlet的包路径,后⾯再加上.servlet类名,这⾥的类名必须是包下⾯的servlet类名,⽬的是让到该servlet的路径 --> <servlet-class>com.servlet.Userservlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Userservlet</servlet-name><!--servlet的别名,和上⾯保持⼀致就⾏  -->
<!--jsp跳转到servlet的路径名,⾃⼰取,⽤来从jsp界⾯跳转到servlet的路径,程序会根据路径到servlet的位置  --> <url-pattern>/Servlet/Userservlet</url-pattern><!---->
</servlet-mapping>
</web-app>
七:建⽴Dao,⽤来执⾏sql语句,判断是否登录成功。类名取为Userdao,
package dao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import db.DBUtil;
public class Userdao {
public int login(String username,String password)
{
Connection conn = Conn();//这⾥就是从DBUtil类⾥⾯得到连接
Statement state =null;
ResultSet rs = null;
int flag=0;
try
{
String sql = "select * from user where name = '"+username+"'";//SQL语句,
state = ateStatement();
uteQuery(sql);
())
{
String("password").equals(password))
{
flag=1;
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
DBUtil.close(rs, state, conn);
}
return flag;
}
}
⼋:修改servlet下⾯的代码,红⾊的为添加的代码
package servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import dao.Userdao;
javabean是干嘛的
@SuppressWarnings("serial")
public class Userservlet extends HttpServlet
{
//当从jsp跳转到servlet类时,⾸先执⾏service函数(这是定理)
protected void service(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException
{
req.setCharacterEncoding("utf-8");//设置字符集,避免乱码
//获取jsp界⾯需要进⾏的操作,
String method = Parameter("method");
if(method.equals("login"))//转到login函数
{
login(req,resp);
}
}
protected void login(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException
{
req.setCharacterEncoding("utf-8");
String username = Parameter("username1");//获取jsp界⾯的username1和password1的值
String password = Parameter("password1");
Userdao userdao = new Userdao();//创建Userdao的实例
int flag =userdao.login(username, password);//⽤来判断是否登陆成功
if(flag==1)
{
System.out.println("登录成功!");
resp.ContextPath()+"/index.jsp");
}
else
{
System.out.println("登录失败!");
}
}
}
九:在login.jsp界⾯我们刚刚没有添加action的路径,现在将他加上,路径就是在l⽂件下刚刚配置的路径,
<%@ page language="java" isErrorPage="true" pageEncoding="utf-8"%>
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" type="text/css" href="style.css"/>
</head>
<body>
<div class="container">
<section id="content">
<form action="${tPath}/Servlet/Userservlet?method=login" method="post">
<!---${tPath}的⽬的是到主⼯程的名字,/Servlet/Userservlet就是l下⾯配置的路径,也就是servlet的路径---> <h1>登录界⾯</h1>
<div>
<input type="text" placeholder="登录名" required="" id="username" name="username1"/>
</div>
<div>
<input type="password" placeholder="密码" required="" id="password" name="password1"/>
</div>
<div>
<input type="submit" value="登录"/>
<a href="#">注册</a>
</div>
</form><!-- form -->
<div class="button">
</div><!-- button -->
</section><!-- content -->
</div><!-- container -->
</body>
</html>
⼗:执⾏⼀下login.jsp,有⼀个成功登陆的界⾯index.jsp上⾯就写着这是主页,另外在控制台输出了⼀句话登陆成功,这⾥我就不粘贴代码了,
结尾:我们发现上⾯的代码⾥⾯我们没有⽤的Userbean这个类,是不是他就没有⽤呢,显然不是,这⾥我们做登陆的时候不需要这个,但是我们要进⾏将数据库的数据传递到jsp界⾯时,我们就需要这个类了。
如果有什么问题,欢迎提问。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。