JSP负责页面展现,其实jsp也是一个java类,最开始java为了在显示页面不得不分别out.println()方法输出标签,那样将显示与业务逻辑混合在一起很不好维护也不简洁。因此诞生了jsp技术。jsp全称为java server page。它是在服务端运行的程序。
java web最经典的还是jsp + servlet +mysql + tomcat。
接下来我们开始一个简单的java web项目。功能为查询数据库,输入学生号然后显示对应的学生姓名,输入姓名返回对应学生的学号,优先从姓名查找学号。
数据库为我昨天博客里建的请点击此处查看
首先我们创建实体类:Student
package micro.entity;
public class Student {
String name;
int no;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
}
package micro.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.mysql.jdbc.PreparedStatement;
public class Dao {
public static Connection getConnection() throws SQLException
{
String url = "jdbc:mysql://localhost:3306/micro";
String username = "root";
String password = "root";
Connection conn = null;
try
{
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url, username, password);
}
catch(ClassNotFoundException e)
{
e.printStackTrace();
}
return conn;
}
public static void close(ResultSet rs,PreparedStatement ps,Connection conn) throws SQLException
{
try
{
rs.close();
ps.close();
conn.close();
}
catch(SQLException e)
{
e.printStackTrace();
}
}
}
package micro.dao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import micro.entity.Student;
import com.mysql.jdbc.PreparedStatement;
public class SearchDao {
/** * @param micro * @return * @throws SQLException */
// static String sql = "select * from Student where ? = ?";
public static int getIdByName(String name) throws SQLException {
int id = -1;
try {
Connection conn = Dao.getConnection();
PreparedStatement ps = (PreparedStatement) conn
.prepareStatement("select * from Student where name = ?");
// ps.setString(1, "name");
ps.setString(1, name);
ResultSet rs = ps.executeQuery();
// List<Student> list = new ArrayList();
while (rs.next()) {
id = rs.getInt("id");
}
Dao.close(rs, ps, conn);
} catch (SQLException e) {
e.printStackTrace();
}
return id;
}
/** * @param id * @return * @throws SQLException */
public static String getNameById(int id) throws SQLException {
Connection conn;
String name = null;
try {
conn = Dao.getConnection();
PreparedStatement ps = (PreparedStatement) conn
.prepareStatement("select * from Student where id = ?");
// ps.setString(1, "");
ps.setInt(1, id);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
name = rs.getString("name");
}
Dao.close(rs, ps, conn);
} catch (SQLException e) {
e.printStackTrace();
}
return name;
}
}
package micro.search;
import java.io.IOException;
import java.sql.SQLException;
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 micro.dao.SearchDao;
/** * Servlet implementation class FindName */
@WebServlet("/FindName")
public class FindNameOrNo extends HttpServlet {
private static final long serialVersionUID = 1L;
/** * @see HttpServlet#HttpServlet() */
public FindNameOrNo() {
super();
// TODO Auto-generated constructor stub
}
/** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
this.doPost(request, response);
}
/** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String username = request.getParameter("username");
int id = Integer.valueOf(request.getParameter("id"));
if(!username.equals(""))
{
try
{
int no = SearchDao.getIdByName(username);
request.setAttribute("id", no);
}
catch(SQLException e)
{
System.out.println("数据库出现异常");
e.printStackTrace();
}
request.getRequestDispatcher("/WEB-INF/IdResult.jsp").forward(request, response);
}
else
{
try
{
String name = SearchDao.getNameById(id);
request.setAttribute("name", name);
}
catch(SQLException e)
{
System.out.println("数据库出现异常");
e.printStackTrace();
}
request.getRequestDispatcher("/WEB-INF/NameResult.jsp").forward(request, response);
}
}
}
<%@ 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>Insert title here</title>
</head>
<body>
<form action="myQuery" method="post">
请输入学生姓名:<input type="text" name="username" /> <br /> 请输入学生学号:<input type="text" name="id" /> <br /> <input type="submit" value="查询" />
</form>
</body>
</html>
<%@ 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>Insert title here</title>
</head>
<body>
<h1>
查询结果对应的学号为:<%= request.getAttribute("id") %>
</h1>
<form action="welcome.jsp" method = "post" >
<input type = "submit" value = "返回" />
</form>
</body>
</html>
<%@ 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>Insert title here</title>
</head>
<body>
<h1>
该学号的同学名字为:<%=request.getAttribute("name")%>
</h1>
<form action="welcome.jsp" method="post">
<input type="submit" value="返回" />
</form>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<servlet>
<servlet-name>Query</servlet-name>
<servlet-class>micro.search.FindNameOrNo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Query</servlet-name>
<url-pattern>/myQuery</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>welcome.jsp</welcome-file>
</welcome-file-list>
</web-app>