Servlet做为Java服务端程序,使用起来仍是挺方便的,下面是具体配置过程,我用的是Intellij Idea。html
1. 作好必要准备,Intellij Idea(或者Eclipse for J2EE)、JDK、Tomcat这些工具一个都不能少java
2. 新建一个Web项目,IDE会帮咱们自动生成src、web、web-inf这些文件目录,还有配置文件web.xml。咱们的后端java代码通常放在src下面,JSP文件放在web目录下,jar包这些额外的库文件放在WEB-INF/lib目录下(lib目录是我本身新建的,而后右键add as library),web.xml直接放在WEB-INF下面。mysql
3. 首先,咱们要配合tomcat,让index.jsp能够跑起来。打开index.jsp,右键点击run 'index.jsp',若是没有这个选项,说明你还没配置好tomcat这个应用容器。要配置tomcat,打开File->Setting,进入设置界面,搜索‘server’,找到application server,而后就能够添加tomcat了。而后打开项目属性设置界面,这里是点击项目,按下F4便可。在Intellij idea中是选择左侧的modules,右侧查看dependencies,点击add->library能够添加tomcat,这里也能够添加第三方jar包。添加好了tomcat和jdk,index.jsp就能够run了。web
4. jsp只是简单的网页嵌入了java代码,最终仍是被编译成了Servlet实例。而咱们要作的Servlet做为J2EE的重要部分,简单的理解就是一个java类,能够有不少实例,负责响应用户请求。固然,也有用JavaBean的,我这里暂且不说,毕竟复杂的java应用都会选用一些成熟的框架。sql
5. 好了,若是一切无误,就对准src文件目录新建一个package,而后新建一个Servlet类,IDE会自动生成doPost和doGet方法。新建好Servlet后,IDE还修改了web.xml文件,咱们还要添加servlet-mapping节点,下面是配置好的web.xml文件。数据库
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
<!-- 处理支付回调 -->
<servlet-mapping>
<servlet-name>PayCallBackServlet</servlet-name>
<url-pattern>/PayCallback</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>PayCallBackServlet</servlet-name>
<servlet-class>com.sh.server.PayCallBackServlet</servlet-class>
</servlet>
</web-app>
首先看到servlet-mapping,这里的url-pattern就是用户访问方式了,这里是http://localhost:8080/PayCallback。当tomcat接收到这样的http请求时,就去web.xml查找url-pattern,若是有这个/PayCallback,那么对应的servlet-name就找到了,再按照它查找到servlet-class是com.....PayCallBackServlet这个类。因此,咱们要怎么处理请求,就在这个类的doPost和doGet方法里作就好了,这两个方法的区别本身查吧。后端
6. 若是是作实验,能够在doGet方法中加入如下代码查看效果。要重启tomcat或点击更新才能看到新内容。tomcat
PrintWriter out =response.getWriter(); out.println("<html>"); out.println("<head><title>Servlet展现页</title></head>"); out.println("<body>name:" + "<br/> sex: " +"</body>"); out.println("</html>");
7. 一般咱们都须要操做数据库,这里以MariaDB或者MySQL为例,下面是一个封装好的jdbc工具,但前提是你要导入用于jdbc的jar包,我这里用的是MariaDB版的。app
public class JDBCUtil { //private final static String DB_DRIVER = "com.mysql.jdbc.Driver";
private final static String DB_DRIVER = "org.mariadb.jdbc.Driver"; private final static String DB_URL = "jdbc:mysql://localhost:3306/"; private final static String DB_NAME = "root"; private final static String DB_PWd = "admin"; static { try { Class.forName(DB_DRIVER); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static Connection getConnection() { Connection conn = null; try { conn = DriverManager.getConnection(DB_URL, DB_NAME, DB_PWd); } catch (SQLException e) { e.printStackTrace(); } return conn; } public static Statement getStatement(Connection conn) { Statement stmt = null; try { stmt = conn.createStatement(); } catch (SQLException e) { e.printStackTrace(); } return stmt; } public static PreparedStatement getPreparedStatement(Connection conn, String sql) { PreparedStatement pstmt = null; try { pstmt = conn.prepareStatement(sql); } catch (SQLException e) { e.printStackTrace(); } return pstmt; } public static ResultSet getRs(Statement stmt, String sql) { ResultSet rs = null; try { rs = stmt.executeQuery(sql); } catch (SQLException e) { e.printStackTrace(); } return rs; } public static void close(Statement stmt) { if (stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } } public static void close(ResultSet rs) { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } } public static void close(Connection conn) { if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
8. 如今试着用这个JDBCUtil工具来作点实际的操做吧,前提是你安装好了数据库,下面是个建立新表的例子,其实就是执行sql语句。框架
public void createTable(){ String sql_drop = "drop table if exists " + DBNAME + "." + TABLENAME; String sql_create = "create table "+ DBNAME + "." + TABLENAME+"(id varchar(10) primary key,name varchar(10))"; Connection conn = JDBCUtil.getConnection(); Statement stmt = JDBCUtil.getStatement(conn); try { stmt.execute(sql_drop); stmt.execute(sql_create); } catch (SQLException e) { e.printStackTrace(); }finally{ JDBCUtil.close(conn); JDBCUtil.close(stmt); } }
下面是建好表后,插入一行的代码。这里能够根据参数,批量插入不一样的数据。
String sql_add = "insert into "+ DBNAME + "." +TABLENAME + " values(?,?)"; Connection conn = JDBCUtil.getConnection(); PreparedStatement pstmt = JDBCUtil.getPreparedStatement(conn, sql_add); try { pstmt.setString(1, "0"); pstmt.setString(2, "q"); conn.setAutoCommit(false);//若改成true 插入中遇到主键冲突还会继续插入,具体看需求
pstmt.addBatch(); pstmt.executeBatch(); conn.commit(); } catch (SQLException e) { e.printStackTrace(); }finally { JDBCUtil.close(conn); JDBCUtil.close(pstmt); }