Javaweb实验五 JSP+Servlet+JavaBean 综合应用

实验五 JSP+Servlet+JavaBean 综合应用

实验内容:

实现图书信息录入及展示功能
将页面 book.jsp 中表单的信息提交给 BookServlet.java,由 Servlet 将接收到
的信息创建成一个 BookBean 的对象,并将该对象封装到 request 中,并在 show.jsp
中显示提交的信息。

实验效果:

初始界面:
请添加图片描述
数据库:
请添加图片描述
请添加图片描述成功界面:请添加图片描述book.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="bookServlet" method="post">
		图书名称: <input type="text" name="bookName" id="bookName"><br/>
		出版社: <input type="text" name="bookPublisher" id="bookPublisher"><br/> 
			图书简介:<input type="text" name="bookDescription" id="bookDescription">
			<br/> <input type="submit" value="提交">
	</form>

</body>
</html>

bookServlet

package Servlet;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
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 DButils.DBUtil;
import book.BookDao;
import book.book;
@WebServlet("/bookServlet")
public class bookServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
       try {
		String bookName=request.getParameter("bookName");
		String bookPublisher=request.getParameter("bookPublisher");
		String bookDescription=request.getParameter("bookDescription");
		
		    book b = new book(); 
			b.setbookName(bookName);
			b.setbookPublisher(bookPublisher);
			b.setbookDescription(bookDescription);
				DBUtil.saveBook(b);
				request.getSession().setAttribute("book", b);
				request.getRequestDispatcher("show.jsp").forward(request, response);				
					} catch (Exception e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
}}

show.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>书名:${book.bookName}</h1>
<h1>出版社:${book.bookPublisher}</h1>
<h1>书本描述:${book.bookDescription}</h1>
<h1>插入成功!!!</h1>
</body>
</html>

DButils.java

package DButils;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.mysql.jdbc.Connection;
import book.book;
public class DBUtil
 {
	static
	{
		try
		{
			Class.forName("com.mysql.jdbc.Driver");	
		} catch (ClassNotFoundException e)
		{
			e.printStackTrace();
		}		
	}
	
	public static Connection getConnection()
	{
		java.sql.Connection connection = null;
		try
		{

			String url = "jdbc:mysql://localhost:3308/mydb?useUnicode=true&characterEncoding=utf-8";
			// 数据库用户名
			String usename = "root";
			// 数据库密码
			String psw =null;
			// 创建Connection连接
			connection = DriverManager.getConnection(url,usename,psw);
			
		} catch (SQLException e)
		{
			e.printStackTrace();
		}
		return (Connection) connection;
	}
	
	public static void closeConnection(Connection connection)
	{
		try
		{
			if(connection != null)
			{
				connection.close();
				connection = null;
			}
		}  catch (SQLException e)
		{
			e.printStackTrace();
		}
	}
	
	public static PreparedStatement preparedStatement(Connection connection,String sql)
	{
		PreparedStatement preparedStatement = null;
		try
		{	
			preparedStatement = connection.prepareStatement(sql);
		} catch (SQLException e)
		{
			e.printStackTrace();
		}
		return preparedStatement;
	}
	public static void closePreparedStatement(PreparedStatement preparedStatement)
	{
		try
		{
			if(preparedStatement != null)
			{
				preparedStatement.close();
				preparedStatement = null;
			}
		}  catch (SQLException e)
		{
			e.printStackTrace();
		}
	}
	
	public static Statement createStatement(Connection connection)
	{
		Statement statement = null;
		try
		{	
			statement = connection.createStatement();
		} catch (SQLException e)
		{
			e.printStackTrace();
		}
		return statement;
	}
	public static void closeStatement(Statement statement)
	{
		try
		{
			if(statement != null)
			{
				statement.close();
				statement = null;
			}
		}  catch (SQLException e)
		{
			e.printStackTrace();
		}
	}
	public static ResultSet getResultSet(Statement statement,String sql)
	{
		ResultSet resultSet = null;
		try
		{	
			resultSet = statement.executeQuery(sql);
		} catch (SQLException e)
		{
			e.printStackTrace();
		}
		return resultSet;
	}
	public static void closeResultSet(ResultSet resultSet)
	{
		try
		{
			if(resultSet != null)
			{
				resultSet.close();
				resultSet = null;
			}
		}  catch (SQLException e)
		{
			e.printStackTrace();
		}
	}
	
	//构造在数据库中存储User的方法
	
	public static void saveBook(book b)
	{
		Connection connection = null;
		PreparedStatement preparedStatement = null;
		try
		{
			connection = DBUtil.getConnection();
			String sql = "insert into books values(?,?,?)";
			preparedStatement = DBUtil.preparedStatement(connection, sql);
			preparedStatement.setString(1, b.getbookName());
			preparedStatement.setString(2, b.getbookPublisher());
			preparedStatement.setString(3, b.getbookDescription());
			
			preparedStatement.executeUpdate();	
		}  catch (SQLException e)
		{
			e.printStackTrace();
		}
	}	
 }

CharacterEncodingFilter.java

package DButils;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;

/**
 * Servlet Filter implementation class CharacterEncodingFilter
 */
@WebFilter(
		urlPatterns= {"/*"},
		initParams= {
				@WebInitParam(name="encoding",value="utf-8")
		}
		)
public class CharacterEncodingFilter implements Filter {
protected String encoding ;
    
    /**
     * Default constructor. 
     */
    public CharacterEncodingFilter() {
        // TODO Auto-generated constructor stub	
    	
    }

	/**
	 * @see Filter#destroy()
	 */
	public void destroy() {
		// TODO Auto-generated method stub
	}

	/**
	 * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
	 */
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		// TODO Auto-generated method stub
		// place your code here
if( encoding !=null) {
	request.setCharacterEncoding(encoding);
}
		// pass the request along the filter chain
		chain.doFilter(request, response);
	}
	/**
	 * @see Filter#init(FilterConfig)
	 */
	public void init(FilterConfig fConfig) throws ServletException {
		// TODO Auto-generated method stub
		this.encoding=fConfig.getInitParameter("encoding");
	}
}

book.java

package book;
public class book {
	    public String bookName;
	    public String bookPublisher;
	    public String bookDescription;
	    public String getbookName() {
	        return bookName;
	    }
	    public void setbookName(String bookName) {
	        this.bookName = bookName;
	    }
		public String getbookPublisher() {
			return bookPublisher;
		}

		public void setbookPublisher(String bookPublisher) {
			this.bookPublisher = bookPublisher;
		}
		public String getbookDescription() {
			return bookDescription;
		}
		public void setbookDescription(String bookDescription) {
			this.bookDescription = bookDescription;
		}    
}

文件部分:
在这里插入图片描述

  • 24
    点赞
  • 137
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只懒洋洋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值