用Intellij Idea创建简单的Servlet
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的更多相关文章
- Intellij IDEA创建javaWeb以及Servlet简单实现
1.创建web工程 File --> New --> Project...
- [转]Intellij idea创建javaWeb以及Servlet简单实现
准备:1. 安装jdk1.72. 安装tomcat1.8 一.创建并设置javaweb工程 1.创建javaweb工程File --> New --> Project... 设置工程名字: ...
- 如何使用eclipse创建简单的servlet
Servlet是一种基于java开发的服务器程序,可以对外公布服务,如果是浏览器应用,可以通过浏览器打开网址的方式查看服务.创建servlet要继承httpservlet,并且在web.xml中配置拦 ...
- 使用Intellij Idea创建简单Maven项目(转)
我是学Java Web的,基本靠自学,在网上收集了各种视频资料,逐一的看,代码逐一的敲.学习了这么久之前一直未成想过要把自己的学习路程记录下来,在网上也看到过很多人把自己的学习历程以及遇到的问题写在了 ...
- 使用IntelliJ IDEA创建简单的Dubbo实例
这个博客是在https://blog.csdn.net/Crazer_cy/article/details/80397649篇文章上的基础上,自己学习用的. Zookeeper为dubbo的注册中心, ...
- 使用IntelliJ IDEA创建简单的Spring Boot项目
方法一: File - New -Project 创建结束后进行测试运行,修改代码如下: package com.springboot.testone; import org.springframew ...
- Intellij创建简单Springboot项目
Intellij创建简单Springboot项目 第一步:选择创建新项目——file-new-project 第二步:选择项目类型——Spring Initializr-next 第三步:输入项目信息 ...
- Inellij idea创建javaWeb以及Servlet简单实现
版权声明:本文为博主原创文章,未经博主允许不得转载. 准备:1. 安装jdk1.7 2. 安装tomcat1.8 一.创建并设置javaweb工程 1.创建javaweb工程File --> N ...
- Intellij idea创建javaWeb:实现JSP/Servlet(转)
转自:https://www.jianshu.com/p/9684e90cf7b5 Intellij idea创建javaWeb:实现JSP/Servlet by_love唯念 关注 2016.12. ...
随机推荐
- 在屏幕上显示C盘根目录下的所有文件和文件夹
1 import java.io.File; //在屏幕上显示C盘根目录下的所有文件和文件夹 public class ListDemo { public static void main(Strin ...
- 写出优秀论文How To Write A Great Essay About Anything
There is an assumption in the world that an essay is something literary you write for school about a ...
- IOS把文件保存进沙盒目录
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); NSS ...
- [POJ2377]Bad Cowtractors(最大生成树,Kruskal)
题目链接:http://poj.org/problem?id=2377 于是就找了一道最大生成树的AC了一下,注意不连通的情况啊,WA了一次. /* ━━━━━┒ギリギリ♂ eye! ┓┏┓┏┓┃キリ ...
- 使用DX绘制3D物体时新手常犯错误,看不见物体时可以一一排查
1.镜头不对: 物体不在镜头范围内,检查视图矩阵,世界矩阵,投影矩阵. 2.颜色全黑: 打开光照情况下,MATERIAL全为0, 或,在没有打开光照情况下,颜色值为0,造成全黑.检查当前Materia ...
- Topcoder SRM 630 (500 floyed 暴力 _builtin_popcount())
题意:给n个点,保证图联通,给点相连的距离,求一个最多的点,这些点之间的距离都是相同的. 分析: 下面的代码是我们房间第一的大神的,写的很简洁,我的思路和他的一样,但是我不知道错哪了. 思路是暴力枚举 ...
- EXT 数据按F12,F11 显示问题
最近做关于EXT的项目,因为是刚开始接触EXT,对什么都不熟悉,所以把其他人写好的浏览页代码考过了来,换成自己需要的. 一切都做好了,然后数据不出来,就调试看,后台也出现数据了,然后就按F12调试前台 ...
- UVa 10088 (Pick定理) Trees on My Island
这种1A的感觉真好 #include <cstdio> #include <vector> #include <cmath> using namespace std ...
- kindeditor编辑器图片水印
//upload_pic.ashx源码 <%@ webhandler Language="C#" class="edit_html_upload_pic" ...
- asp.net批量发布博客到各大博客平台
新浪博客 http://upload.move.blog.sina.com.cn/blog_rebuild/blog/xmlrpc.php 网易博客 http://os.blog.163.com/ap ...