idea中写servlet+jdbc
文章目录
1.idea里面新创一个project
名字就叫javaweb
2.新建一个module
名字就叫servlet01
3.给module添加javeEE框架
然后为了让servlet01变成具有javaweb的目录结构(比如web-inf这些),需要将servlet01配为javaEE:在servlet01下add framework support(右击添加javaee),此时servlet01的目录结构就应该是web-inf(下面有web.xml)+index.jsp
4.然后就可以写servlet程序了,不过还是先创建需要的文件!
在项目的src中新建package(这里名字就叫com.student),并创建实现了servlet接口的java程序(名字就叫studentservelt.java,注意这里还无法识别servlet接口,因为你的servlet-api.jar包还在tomcat-Apache10/lib里,这时需要在project strcuture里面+jar包依赖),这时idea就可以识别servlet关键字了,然后alt+enter实现接口中需要实现的方法(init,service…五个)。
5.正式开写java程序(servlet)
写studentservlet.java,下面是代码
package com.student;
import jakarta.servlet.*;
import javax.swing.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
public class StudentServlet implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest Request, ServletResponse Response) throws ServletException, IOException {
// 设置一下response的响应内容的类型
Response.setContentType("text/html");
// 获取一下Response的输出流,将测试数据打印到html上
PrintWriter writer = Response.getWriter();
//jdbc连接数据库
String url="jdbc:mysql://localhost:3306/xsr_dbms1";
String user="root";
String pwd="xxxxxx";
String sql="select id,name from student";
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
//注册驱动,获取连接,执行sql,处理结果集
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn= DriverManager.getConnection(url, user, pwd);
ps = conn.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()){
String id=rs.getString("id");
String name=rs.getString("name");
// System.out.println(id+","+name);
writer.print(id+","+name+"<br>");
}
} catch (SQLException | ClassNotFoundException e) {
throw new RuntimeException(e);
}finally {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
if (ps != null) {
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
if (conn != null) {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
}
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
注意添加mysql-connector-java的jar包
6.注册servlet
然后注册servlet:配置web.xml文件(路径与servlet类对应):web-app标签里,新创servlet和servlet-mapping标签(前者根据servlet-name找到servlet实现类,后者匹配项目下的路径找到servlet名字,我这servlet/servlet-name就随便起个叫servlet to student,servlet/servlet-class叫javawebtest_01.studentservlet,servlet-mapping/url-pattern为/student)。
7.部署tomcat
程序写好就可以将webapp部署到tomcat了
在绿色小锤子旁,点击add configurations,点击+,找到tomcat server,进入tomcat服务器配置界面:
在里面首先确定该server名字(就叫tomcat 10吧),确定server home(引入tomcat-Apache文件路径),然后确定open brower(我默认不打开),确定url(如果是本机就一般是http://localost:8080,这就是tomcat server的端口)。确定 on update action(默认就restart server,每当更新项目源代码就重启server)。确定JRE(默认)。看是否修改tomcat的http port(默认就8080),
然后Deployment部署吧!
在Deployment界面中,给server中部署webapp:
点击+,artifact,默认生成实现了Servlet接口的类的对应文件(servlet01:war exploded),然后确定Application context(应用上下文,规定该war exploded的路径,为项目的根路径,我这里是xmm),然后在idea下面就弹出一个界面(service),你可以看到该server底下部署的webapp(servlet01:war exploded)
8.启动tomcat
部署好tomcat就可以启动啦!
还是那个小锤子旁,点击虫子(debug,建议这样启动tomcat,因为信息都可以在idea的debugger中看到tomcat的信息),
9.访问url测试
没啥问题就可以测试拉!在浏览器中搜http://localost:8080/xmm/,如果没错的话啥都看不到,因为你没html哈哈哈,在与web-inf同级,创建index.html(因为如果直接访问http://localost:8080/xmm就可以直接访问到index.html,如果是其他名字的html的话,就要在后面加上路径),
在index.html中来一个a链接,a链接的src为/xmm/xxx
(xxx为web.xml中servlet标签的设置路径,即servlet-mapping下的url-pattern(我这的xxx就是student),点击这个a连接就可以看我的测试代码(即通过jdbc将数据库的一张表,用servlet的service方法的ServletResponse参数的getWriter()获取的输出流,按属性打印到/xmm/student路径对应的html上)