1 jsp+servlet+javabean(MySQL+eclipse)
此处把javabean分为service与dao
2.StudentSystem项目(实现登录的验证)
2.登录界面
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>登录</title>
</head>
<body>
${message} <br>
<form action="${pageContext.request.contextPath}/LoginServlet" method="post" >
<table align="center" border="1" width="500" height="300" bgcolor="#227733">
<tr>
<td colspan="2" width="500" align="center">
用户登录
</td>
</tr>
<tr>
<td width="100">
账号:
</td>
<td width="*">
<input type="text" name="name"/>
</td>
</tr>
<tr>
<td width="100">
密码:
</td>
<td width="*">
<input type="text" name="password"/>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="radio" name="radio" value="admin" id="radio1">管理员
<input type="radio" name="radio" value="student" id="radio2">学生
</td>
</tr>
<tr>
<td align="center" colspan="2">
<input type="submit" value="登录">
<input type="reset" value="重置">
</td>
</tr>
</table>
</form>
</body>
</html>
3servlet实现交互和简单逻辑处理
package com.lili.students.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.lili.students.javaBean.IStudentService;
import com.lili.students.javaBean.Student;
import com.lili.students.javaBean.StudentServiceImpl;
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public LoginServlet() {
super();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("hello world");
//1 获取表单信息
String sno=request.getParameter("name");
String pass=request.getParameter("password");
String radio=request.getParameter("radio");
System.out.println(radio);
//2 验证输入的数据合法性
HttpSession session=request.getSession();
if(sno==null||"".equals(sno.trim()))
{ session.setAttribute("message", "学号输入出错!");
response.sendRedirect(request.getContextPath()+"/login.jsp");
return;
}
if(pass==null || "".equals(pass.trim()))
{ session.setAttribute("message", "密码输入出错!");
response.sendRedirect(request.getContextPath()+"/login.jsp");
return;
}
//3 创建Service对象(面向接口编程)
IStudentService service=new StudentServiceImpl();
//4调研service对象的checkLogin方法(实现类的方法)
Student student=service.checkLogin(sno,pass);
session.setAttribute("user","student.getName()");
//5验证未通过跳转登录界面
if(student==null)
{
session.setAttribute("message","该用户不存在或密码错误!");
response.sendRedirect(request.getContextPath()+"/login.jsp");
return;
}
response.sendRedirect(request.getContextPath()+"/index.jsp");
return;
}
}
3.service层(面向接口编程)
3.1
package com.lili.students.javaBean;
public interface IStudentService {
Student checkLogin(String sno, String pass);
}
3.2此接口的实现类
package com.lili.students.javaBean;
import com.lili.students.dao.IStudentsDao;
import com.lili.students.dao.StudentsDaoImpl;
public class StudentServiceImpl implements IStudentService {
@Override
public Student checkLogin(String sno, String pass) {
IStudentsDao dao=new StudentsDaoImpl();
Student student=dao.checkSql(sno,pass);
return student;
}
}
4学生类
package com.lili.students.javaBean;
import java.io.Serializable;
public class Student implements Serializable {
private String sno;
private int id;
private String pass;
private String name;
private int age;
private String school;
public void student()
{
}
public int getId() {
return id;
}
public String getPass() {
return pass;
}
public String getSno() {
return sno;
}
public void setSno(String sno) {
this.sno = sno;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public void setId(int id) {
this.id=id;
}
public void setPass(String pass) {
this.pass=pass;
}
}
5.dao层接口
package com.lili.students.dao;
import com.lili.students.javaBean.Student;
public interface IStudentsDao {
Student checkSql(String sno, String pass);
}
5.1实现类
package com.lili.students.dao;
import java.sql.*;
import com.lili.students.javaBean.Student;
import com.lili.students.mysqlHlep.JdbcConnection;
public class StudentsDaoImpl implements IStudentsDao {
private Connection conn;
private Statement stmt;
private PreparedStatement ps;
private ResultSet rs;
public Student checkSql(String sno, String pass) {
Student student=null;
try {
conn=JdbcConnection.connectionHelp();
String sql="select * from students where sno=? and pass=?";
ps=conn.prepareStatement(sql);
ps.setString(1, sno);
ps.setString(2, pass);
rs=ps.executeQuery();
if(rs.next())
{
student=new Student();
student.setId(rs.getInt("id"));
student.setSno(rs.getString("sno"));
student.setName(rs.getString("name"));
student.setAge(rs.getInt("age"));
student.setSchool(rs.getString("school"));
student.setPass(rs.getString("pass"));
}
} catch (SQLException e) {
System.out.println("数据库访问出错!");
e.printStackTrace();
}finally{
try {
JdbcConnection.CloseConnection(conn, ps,stmt, rs);
} catch (SQLException e) {
System.out.println("关闭数据库访问出错!");
e.printStackTrace();
}
}
return student;
}
}
6.SQL辅助类
package com.lili.students.mysqlHlep;
import java.sql.*;
public class JdbcConnection {
static
{try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
static Connection conn=null;
public static Connection connectionHelp () throws SQLException
{
if(conn==null||conn.isClosed())
{
String url="jdbc:mysql://localhost:3306/test";
String user="root";
String password="123456";
conn=DriverManager.getConnection(url, user, password);
}
return conn;
}
public static void CloseConnection(Connection conn,PreparedStatement ps,Statement stmt,ResultSet rs) throws SQLException
{
if(conn!=null&& !conn.isClosed())
{ conn.close();
}
if(ps!=null&& !ps.isClosed())
{ ps.close();
}
if(stmt!=null&& !stmt.isClosed())
{ stmt.close();
}
if(rs!=null&& !rs.isClosed())
{rs.close();
}
}
}
7.。最后效果
8总结:此处给出MVC的详细编程设计思路,有助于帮助理解MVC与三层架构的关系,可为读者学习框架奠定厚实的基础。
欢迎讨论与补充完善。