Servlet作为Java服务端程序,使用起来还是挺方便的,下面是具体配置过程,我用的是Intellij Idea。

1. 做好必要准备,Intellij Idea(或者Eclipse for J2EE)、JDK、Tomcat这些工具一个都不能少

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下面。

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了。

4. jsp只是简单的网页嵌入了java代码,最终还是被编译成了Servlet实例。而我们要做的Servlet作为J2EE的重要部分,简单的理解就是一个java类,可以有很多实例,负责响应用户请求。当然,也有用JavaBean的,我这里暂且不说,毕竟复杂的java应用都会选用一些成熟的框架。

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或点击更新才能看到新内容。

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版的。

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);
}

用Intellij Idea创建简单的Servlet的更多相关文章

  1. Intellij IDEA创建javaWeb以及Servlet简单实现

    1.创建web工程 File --> New --> Project...

  2. [转]Intellij idea创建javaWeb以及Servlet简单实现

    准备:1. 安装jdk1.72. 安装tomcat1.8 一.创建并设置javaweb工程 1.创建javaweb工程File --> New --> Project... 设置工程名字: ...

  3. 如何使用eclipse创建简单的servlet

    Servlet是一种基于java开发的服务器程序,可以对外公布服务,如果是浏览器应用,可以通过浏览器打开网址的方式查看服务.创建servlet要继承httpservlet,并且在web.xml中配置拦 ...

  4. 使用Intellij Idea创建简单Maven项目(转)

    我是学Java Web的,基本靠自学,在网上收集了各种视频资料,逐一的看,代码逐一的敲.学习了这么久之前一直未成想过要把自己的学习路程记录下来,在网上也看到过很多人把自己的学习历程以及遇到的问题写在了 ...

  5. 使用IntelliJ IDEA创建简单的Dubbo实例

    这个博客是在https://blog.csdn.net/Crazer_cy/article/details/80397649篇文章上的基础上,自己学习用的. Zookeeper为dubbo的注册中心, ...

  6. 使用IntelliJ IDEA创建简单的Spring Boot项目

    方法一: File - New -Project 创建结束后进行测试运行,修改代码如下: package com.springboot.testone; import org.springframew ...

  7. Intellij创建简单Springboot项目

    Intellij创建简单Springboot项目 第一步:选择创建新项目——file-new-project 第二步:选择项目类型——Spring Initializr-next 第三步:输入项目信息 ...

  8. Inellij idea创建javaWeb以及Servlet简单实现

    版权声明:本文为博主原创文章,未经博主允许不得转载. 准备:1. 安装jdk1.7 2. 安装tomcat1.8 一.创建并设置javaweb工程 1.创建javaweb工程File --> N ...

  9. Intellij idea创建javaWeb:实现JSP/Servlet(转)

    转自:https://www.jianshu.com/p/9684e90cf7b5 Intellij idea创建javaWeb:实现JSP/Servlet by_love唯念 关注 2016.12. ...

随机推荐

  1. 虚函数(virtual)为啥不能是static

    静态成员函数,可以不通过对象来调用,即没有隐藏的this指针. virtual函数一定要通过对象来调用,即有隐藏的this指针. static成员没有this指针是关键!static function ...

  2. Support Library官方教程(3)android studio中导入支援包

    Support Library Setup How you setup the Android Support Libraries in your development project depend ...

  3. OEM status|start|stop

    OEM一旦建立以后,LINUX的主机名(hosts)就不要去改变. [oracle@redhat4 ~]$ emctl start dbconsoleOC4J Configuration issue. ...

  4. js实现ppt

    实现ppt的js框架有很多,这里推荐几个: impress.js      impress.js demo webSlide.js    webSlide.js demo reveal.js      ...

  5. 学习Hadoop不错的系列文章

    1)Hadoop学习总结 (1)HDFS简介 (2)HDFS读写过程解析 (3)Map-Reduce入门 (4)Map-Reduce的过程解析 (5)Hadoop的运行痕迹 (6)Apache Had ...

  6. servlet应用具体实例

    web,xml应用文件 1.<filter>参数 <filter> <filter-name>encodingFilter</filter-name> ...

  7. ImageView的属性android:scaleType,即ImageView.setScaleType(ImageView.ScaleType)

    1 imageView.setScaleType(ImageView.ScaleType.FIT_XY ); 1 这里我们重点理解ImageView的属性android:scaleType,即Imag ...

  8. uva10375 Choose and divide

    唯一分解定理. 挨个记录下每个质数的指数. #include<cstdio> #include<algorithm> #include<cstring> #incl ...

  9. UVa 11752 (素数筛选 快速幂) The Super Powers

    首先有个关键性的结论就是一个数的合数幂就是超级幂. 最小的合数是4,所以枚举底数的上限是pow(2^64, 1/4) = 2^16 = 65536 对于底数base,指数的上限就是ceil(64*lo ...

  10. UVa 11174 (乘法逆元) Stand in a Line

    题意: 有n个人排队,要求每个人不能排在自己父亲的前面(如果有的话),求所有的排队方案数模1e9+7的值. 分析: <训练指南>上分析得挺清楚的,把公式贴一下吧: 设f(i)为以i为根节点 ...