一个简单的servletJDBCweb项目

这个项目会用到webDom4j解析xml ,   数据库  , junit  ,3层架构 

首先看一下这次项目的目录结构  




下面依次贴出代码 


首先bean

package com.my.servlet.bean;

import java.io.Serializable;

public class StudentBean implements Serializable{
	private int id; 
	private String name;
	private String sex;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	
	@Override
	public String toString() {
		return "StudentBean [id=" + id + ", name=" + name + ", sex=" + sex + "]";
	}
	
	
}

工具类  主要使用dom4j解析xml连接数据库 

 xml文件  

<?xml version="1.0" encoding="UTF-8"?> 
<db>  
	<!-- dbXml.xml -->
	<driver>com.mysql.jdbc.Driver</driver>
	<url>jdbc:mysql://localhost:3306/test</url>
	<user>root</user>
	<password>123456</password>
</db>

DBUtil类

package com.my.servlet.util;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;


import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class DBUtil {
	// 加载驱动 
	static{
		try {
			Class.forName(dom4jDemo("driver"));
		} catch (Exception e) {
			// TODO: handle exception
		}
	}
	
	/**
	 * 连接数据库   
	 * @return   返回数据库连接  
	 */
	public static Connection connectionSql(){
		Connection conn = null;
		try {
			conn =  DriverManager.getConnection(dom4jDemo("url"), dom4jDemo("user"), dom4jDemo("password"));
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println("数据库连接错误 ");
		}
		return conn;
	}
	
	/**
	 * 解析xml   将数据保存在xml文件中  通过解析xml来获得  
	 * @param element   需要得到的对象 
	 * @return   返回这个对象在xml中的值 
	 */
	public static String dom4jDemo(String element){
		// 创建saxReader对象  
        SAXReader reader = new SAXReader();  
        // 通过read方法读取一个文件 转换成Document对象  
        Document document;
        String result = "";
		try {
			// 因为要使用web  所以使用ClassLoader来读取
			ClassLoader classs = DBUtil.class.getClassLoader();
			InputStream io = classs.getResourceAsStream("dbXml.xml");
			document = reader.read(io);
			//获取根节点元素对象  
	        Element node = document.getRootElement();  
	        result = node.element(element).getText();
		} catch (DocumentException e) {
			System.out.println("文件找不到");
			e.printStackTrace();
		}  
		return result;
	}

}


dao层(持久层)

接口  

package com.my.servlet.dao.idao;

import java.util.List;

import com.my.servlet.bean.StudentBean;

public interface IStudentDao {
	/**
	 * 查询所有的学生  
	 * @return   
	 */
	public List<StudentBean> getAllStudent();

}											

实现类 

package com.my.servlet.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.my.servlet.bean.StudentBean;
import com.my.servlet.dao.idao.IStudentDao;
import com.my.servlet.util.DBUtil;

public class StudentBeanDao implements IStudentDao{
	
	private DBUtil dbUtil = new DBUtil();
	@Override
	public List<StudentBean> getAllStudent() {
		Connection conn = dbUtil.connectionSql();
		String sql = "SELECT t_student.sex,t_student.name,t_student.id FROM t_student";
		List<StudentBean> students = new ArrayList<StudentBean>();
		try {
			// 使用预编译    防止注入  
			PreparedStatement prepatedStatement=conn.prepareStatement(sql);
			ResultSet rs = prepatedStatement.executeQuery();
			//循环结果集  
			while(rs.next()){
				// 将值封装到对象中 
				StudentBean stu = new StudentBean();
				stu.setId(rs.getInt("t_student.id"));
				stu.setName(rs.getString("t_student.name"));
				stu.setSex(rs.getString("t_student.sex"));
				// 将对象添加到集合中 
				students.add(stu);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return students;
	}
	
}

server(服务层)

package com.my.servlet.server.iserver;

import java.util.List;

import com.my.servlet.bean.StudentBean;

public interface IStudentServerDao {
	/**
	 * 查询所有的学生  
	 * @return   
	 */
	public List<StudentBean> getAllStudent();

}	


实现

package com.my.servlet.server;

import java.util.List;

import com.my.servlet.bean.StudentBean;
import com.my.servlet.dao.StudentBeanDao;
import com.my.servlet.dao.idao.IStudentDao;
import com.my.servlet.server.iserver.IStudentServerDao;

public class StudentServer implements IStudentServerDao{
	private IStudentDao isd = new StudentBeanDao();
	@Override
	public List<StudentBean> getAllStudent() {
		// TODO Auto-generated method stub
		return isd.getAllStudent();
	}
}


servlet


package com.my.servlet.servlet;

import java.io.IOException;
import java.util.List;

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 com.google.gson.Gson;
import com.my.servlet.bean.StudentBean;
import com.my.servlet.server.StudentServer;
import com.my.servlet.server.iserver.IStudentServerDao;

/**
 * Servlet implementation class StudentServlet  因为版本3.0 所以采用的是注释  
 */
@WebServlet("/StudentServlet")
public class StudentServlet extends HttpServlet {
	
	private IStudentServerDao is = new StudentServer();
	
    /**
     * @see HttpServlet#HttpServlet()
     */
    public StudentServlet() {
        super();
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("=====");
		// 查询所有学生
		List<StudentBean> stus = is.getAllStudent();
		// 使用Gson将值转换成json字符串  方便前台取值 
		Gson gson = new Gson();
		// 将数据响应回界面  
		response.getWriter().print(gson.toJson(stus));
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}


index.jsp


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<script type="text/javascript" src="js/jquery-3.1.0.min.js"></script>
<script type="text/javascript" src="js/bootstrap.min.js"></script>
<script>
	$(function() {
		$.ajax({
			url : "/Servlet/StudentServlet",
			type : "post",
			dataType : "json",
			success : function(date) {
				var htmlStr = "";
				$.each(date,function(i){
					htmlStr += "<tr><td>"+date[i].id+"</td><td>"+date[i].name+"</td><td>"+date[i].sex+"</td></tr>";
				});
				$("tbody").html(htmlStr);
			}
		});
	});
</script>
</head>

<body>
	<br>
	<table>
		<thead>
			<tr>
				<th>编号</th>
				<th>名字</th>
				<th>性别</th>
			</tr>
		</thead>
		<tbody>
			<tr><td></td><td></td><td></td></tr>
		</tbody>
	</table>
</body>
</html>

最后是web.xml

<?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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>Servlet</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
  
</web-app>

还有一个防止乱码的过滤器  (针对post)

如果是get的话需要采用字符串转码的格式  

// 将gbk转化为utf-8
		String a = "4";
		String b = new String(a.getBytes("ISO8859-1"), "utf-8");

过滤器

package com.my.servlet.filter;

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;

/**
 * Servlet Filter implementation class EncodingFilter
 */
@WebFilter("/EncodingFilter")
public class EncodingFilter implements Filter {

    /**
     * Default constructor. 
     */
    public EncodingFilter() {
        // 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 {
		
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		response.setCharacterEncoding("utf-8");
		chain.doFilter(request, response);
	}

	/**
	 * @see Filter#init(FilterConfig)
	 */
	public void init(FilterConfig fConfig) throws ServletException {
		// TODO Auto-generated method stub
	}

}



好的,以下是一个简单的使用MyBatis框架和Tomcat ServletWeb项目。 1. 首先,你需要下载并安装MyBatis和Tomcat Servlet。 2. 创建一个Maven项目,并将以下依赖项添加到pom.xml文件中: ```xml <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency> </dependencies> ``` 3. 在src/main/resources目录下创建一个mybatis-config.xml文件,配置MyBatis框架。 ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/test" /> <property name="username" value="root" /> <property name="password" value="root" /> </dataSource> </environment> </environments> <mappers> <mapper resource="mapper/UserMapper.xml" /> </mappers> </configuration> ``` 这里的配置是使用MySQL数据库,你需要根据自己的情况进行修改。 4. 在src/main/java目录下创建一个Servlet类,用于处理HTTP请求。 ```java import java.io.IOException; import java.io.PrintWriter; import java.util.List; 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 org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; @WebServlet("/user") public class UserServlet extends HttpServlet { private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { SqlSessionFactory factory = new SqlSessionFactoryBuilder() .build(UserServlet.class.getResourceAsStream("/mybatis-config.xml")); SqlSession session = factory.openSession(); List<User> users = session.selectList("UserMapper.getAllUsers"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<body>"); out.println("<h1>Users</h1>"); out.println("<ul>"); for (User user : users) { out.println("<li>" + user.getName() + "</li>"); } out.println("</ul>"); out.println("</body>"); out.println("</html>"); session.close(); } } ``` 这个Servlet类会查询数据库中的所有用户,并将它们显示在网页上。 5. 在src/main/java目录下创建一个User类,用于表示用户对象。 ```java public class User { private int id; private String name; private String email; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } } ``` 6. 在src/main/resources/mapper目录下创建一个UserMapper.xml文件,用于定义SQL语句和映射关系。 ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="UserMapper"> <select id="getAllUsers" resultType="User"> SELECT * FROM users </select> </mapper> ``` 这个文件定义了一个getAllUsers查询,它会返回所有用户对象。 7. 最后,在Tomcat中运行这个Web项目。你可以使用以下命令打包项目: ``` mvn clean package ``` 然后将target目录下生成的.war文件复制到Tomcat的webapps目录下,并启动Tomcat服务器。 现在你可以在浏览器中访问http://localhost:8080/你的项目名/user,就会看到所有用户的列表了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值