这是最基础的java jsp servlet jdbc内容的混合使用,主要实现了jsp页面的登录注册功能,同时连接数据库。
1、创建实体化对象:
package com.cn.info;
public class Info {
private String id;
private String name;
private String password;
// private String password1;
private String sex;
private int age;
private String tel;
private String adress;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
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;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getAdress() {
return adress;
}
public void setAdress(String adress) {
this.adress = adress;
}
}
2、编写相关的jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>登录</title>
<body bgcolor = "blue">
<h1 align = center >欢迎您的到来</h1>
<form action = "LoginServlet" method = "post">
<table border = "1" align = center>
<tr>
<td>i d:</td>
<td><input type = "text" name = "id" ></td>
</tr>
<tr>
<td>密 码:</td>
<td><input type = "password" name = "password" ></td>
</tr>
<tr>
<td>
<th>
<input type = "submit" value = "登录">
<input type = "reset" value = "重置">
<input type = "button" value = "注册" onClick="window.location.href='register.jsp'">
</th>
</td>
</tr>
</table>
</form>
</body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>注册成功</title>
</head>
<body>
<h1 align = "center">注册成功!</h1>
<h1 align = "center">请返回登录页面----------</h1>
</body>
</html>
2、创建登录注册的servlet
package com.cn.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 com.cn.add.AddUser;
import com.cn.info.Info;
@SuppressWarnings("serial")
public class AddUserServlet extends HttpServlet {
/**
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
request.setCharacterEncoding("gb2312");
response.setCharacterEncoding("gb2312");
PrintWriter out = response.getWriter();
String id = request.getParameter("id");
String name = request.getParameter("name");
String password = request.getParameter("password");
String sex = request.getParameter("sex");
int age = Integer.parseInt(request.getParameter("age"));
String tel = request.getParameter("tel");
String adress = request.getParameter("adress");
Info info = new Info();
info.setId(id);
info.setName(name);
info.setPassword(password);
info.setSex(sex);
info.setAge(age);
info.setAdress(adress);
info.setTel(tel);
AddUser adduser = new AddUser();
adduser.add(info);
request.getRequestDispatcher("registersuccess.jsp").forward(request, response);
out.flush();
out.close();
}
/**
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}
}
package com.cn.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 com.cn.databases.Select;
import com.cn.info.Info;
public class LoginServlet extends HttpServlet {
/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
request.setCharacterEncoding("gb2312");
response.setCharacterEncoding("gb2312");
PrintWriter out = response.getWriter();
String id = request.getParameter("id");
String password= request.getParameter("password");
Info info = new Info();
info.setId(id);
info.setPassword(password);
Select s = new Select();
s.login(info);
request.getRequestDispatcher("successful.jsp").forward(request,response);
out.flush();
out.close();
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}
}
3、创建数据库连接
package com.cn.databases;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.mysql.jdbc.Connection;
public class Jdbc_Connection {
static String DriverName = "com.mysql.jdbc.Driver";
static String url = "jdbc:mysql://localhost:3306/homework?useUnicode=true&characterEncoding=utf8";
static String username = "root";
static String pswd = "123456";
static {
try{
Class.forName(DriverName);
System.out.println("创建连接成功!");
}catch(ClassNotFoundException e){
System.out.println("创建驱动失败!");
e.printStackTrace();
}
}
public static Connection getConnection(){
Connection con = null;
try{
con = (Connection) DriverManager.getConnection(url, username, pswd);
System.out.println("数据库连接成功!");
}catch(SQLException e){
System.out.println("数据库连接失败!");
e.printStackTrace();
}
return con;
}
public static void free(ResultSet rs, Connection con,Statement stmt){
try{
if(rs != null)
rs.close();
}catch(SQLException e){
System.out.println("关闭ResultSet失败!");
e.printStackTrace();
}finally{
try{
if(con != null)
con.close();
}catch(SQLException e){
System.out.println("关闭Connection失败");
e.printStackTrace();
}finally{
try{
if(stmt != null)
stmt.close();
}catch(SQLException e){
System.out.println("关闭Statement失败");
e.printStackTrace();
}
}
}
}
//public static void main(String[] agrs){
// Jdbc_Connection j = new Jdbc_Connection();
// Jdbc_Connection.getConnection();
}
}
4、登录相当于在数据库中查找并且匹配判断,注册相当于添加数据到数据库这里写代码片
package com.cn.databases;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import com.cn.info.Info;
import com.mysql.jdbc.Connection;
public class Select {
public void login(Info info){
Connection con = null;
PreparedStatement psmt = null;
ResultSet rst = null;
try{
con = Jdbc_Connection.getConnection();
String sql = “Select * from login where id= ?”;
psmt = con.prepareStatement(sql);
psmt.setString(1,info.getId());
rst = psmt.executeQuery();
if(rst.next()){
// String password = rst.getString(“password”);
// System.out.println(password);
if(rst.getString(“password”).equals(info.getPassword())){
System.out.println(“登陆成功!”);
}else{
System.out.println(“登录失败!”);
}
}else{
System.out.println(“没有该用户请返回注册!”);
}
}catch(Exception e){
e.printStackTrace();
}finally{
Jdbc_Connection.free(rst, con,psmt);
}
}
}
“`
package com.cn.add;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import com.cn.databases.Jdbc_Connection;
import com.cn.info.Info;
import com.mysql.jdbc.Connection;
public class AddUser {
public void add(Info info ){
Connection con = null;
PreparedStatement psmt = null;
ResultSet rst = null;
try{
con=Jdbc_Connection.getConnection();
String sql = "insert into login values(?,?,?,?,?,?,?)";
psmt = con.prepareStatement(sql);
psmt.setString(1,info.getId() );
psmt.setString(2, info.getPassword());
psmt.setString(3, info.getName());
psmt.setString(4,info.getSex());
psmt.setInt(5, info.getAge());
psmt.setString(6, info.getTel());
psmt.setString(7, info.getAdress());
psmt.executeUpdate();
System.out.println("注册成功!");
}catch(Exception e){
e.printStackTrace();
}finally{
Jdbc_Connection.free(rst, con, psmt);
}
}
}
5、创建处理编码异常的过滤器
package com.cn.filter;
import java.io.IOException;
import java.nio.file.DirectoryStream.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
@SuppressWarnings(“rawtypes”)
public abstract class ChineseFilter implements Filter{
public void destroy(){
}
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)throws IOException,ServletException{
request.setCharacterEncoding("utf-8");//将所有request内的对象设置字符集为utf-8
response.setCharacterEncoding("utf-8");//将所有response内的对象设置字符集为utf-8
chain.doFilter(request,response);//用chain 的doFilter处理过滤
}
public void init(FilterConfig arg0) throws ServletException{
}
}
无法实现登录注册失败的跳转页面,想不出怎么实现,求支招