IDEA快速实现一个简单的web应用开发

使用集成开发环境实现web开发

集成开发工具很多,其中目前使用比较多的是IntelliJ IDEA和Eclipse

  • IntelliJ IDEA(居多): JetBrain公司开发的收费软件, IDEA在提示功能方面要强于Eclipse使用起来更加智能更好用
  • Eclipse(较少):Eclipse是IBM团队开发的, Eclipse寓意是“日食”(日是SUN公司), 但是2009年的时候SUN公司被Oracle公司并购了

使用IDEA集成开发工具开发Servlet

第一步: New Project(如创建一个Empty Project空工程) —> New Module(如在该空工程下新建一个普通的JavaSE模块/基于Maven的Java Enterprise模块)

  • 这个Empty Project起名为javaweb(一般情况下新建的Project的名字最好和目录的名字一致)
  • 这个Module起名servlet01, 然后自动会被放在javaweb的project下面

第二步: 如果新建的是普通的JavaSE模块需要变成符合webapp规范的JavaEE模块(让IDEA自动给你生成一个符合Servlet规范的webapp的目录结构)

  • 在Module上右键Add Framework Support(添加框架支持), 在弹出的窗口中选择Web Application默认是4.0版本
  • IDEA会根据Web Application模板生成一个web目录,这个web目录就是我们的一个项目, 即webapp的根 , 例如代表webapps目录中的一个oa项目

第四步(非必须):根据Web Application生成的资源中有index.jsp文件,这里我选择删除这个index.jsp文件

第五步:编写HelloServlet实现Servlet接口, 实现jakarta.servlet.Servlet接口中的5个方法

  • 将CATALINA_HOME/lib/servlet-api.jar 和 jsp-api.jar添加到classpath当中(这里的classpath说的是IDEA的classpath)
  • 需要导入Servlet.class文件所在的jar包 : File --> Project Structrue(设置工程结构) --> Modules --> Dependencies ----> 点击 " + "添加依赖 --> Add JARS(添加单独的jar包) , 也可以 Add Libraries 添加整个库的jar包
//这些类都不是JDK中的jar包 , 需要通过classpath环境变量告诉虚拟机从哪加载这些类 
import jakarta.servlet.Servlet;
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import jakarta.servlet.ServletConfig;
import java.io.IOException;
import java.io.PrintWriter;

//实现Servlet接口中的五个方法
public class HelloServlet implements Servlet{
    
    
    //实现jakarta.servlet.Servlet接口中的5个方法
}

第六步:在Servlet当中的service方法中编写业务代码(我们这里实现连接数据库的功能)

public class HelloServlet implements Servlet{
    
    

	public void init(ServletConfig config) throws ServletException{
    
    
	
	}

	public void service(ServletRequest request,ServletResponse response)
		throws ServletException , IOException{
    
    

        //设置响应的内容类型
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();

		// 编写JDBC代码,连接数据库,查询所有学生信息。
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		try{
    
    
			// 注册驱动 
			Class.forName("com.mysql.cj.jdbc.Driver");
			// 获取连接
			String url = "jdbc:mysql://localhost:3306/bjpowernode";
			String user = "root";
			String password = "root";
			conn = DriverManager.getConnection(url,user,password);
			// 获取预编译的数据库操作对象
			String sql = "select no,name from t_student";
			ps = conn.prepareStatement(sql);
			// 执行SQL
			rs = ps.executeQuery();
			// 处理查询结果集
			while(rs.next()){
    
    
				String no = rs.getString("no");
				String name = rs.getString("name");
				//将查询到的信息输出到浏览器
				out.print(no + "," + name + "<br>");
			}
		}catch(Exception e){
    
    
			e.printStackTrace();
		}finally{
    
    
			// 释放资源
			if(rs != null){
    
    
				try{
    
    
					rs.close();
				}catch(Exception e){
    
    
					e.printStackTrace();
				}
			}
			if(ps != null){
    
    
				try{
    
    
					ps.close();
				}catch(Exception e){
    
    
					e.printStackTrace();
				}
			}
			if(conn != null){
    
    
				try{
    
    
					conn.close();
				}catch(Exception e){
    
    
					e.printStackTrace();
				}
			}
		}
	}

	public void destroy(){
    
    
	
	}

	public String getServletInfo(){
    
    
		return "";
	}

	public ServletConfig getServletConfig(){
    
    
		return null;
	}
}

第七步:在WEB-INF目录下新建了一个子目录:lib

  • 这个目录名可不能随意,必须是全部小写的lib
  • 存放连接数据库的驱动所在的jar包

第八步:在WEB-INF目录下的web.xml文件中完成StudentServlet类的注册(指定请求路径和Servlet之间对应关系)

<?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_4_0.xsd"
         version="4.0">

    <servlet>
        <servlet-name>studentServlet</servlet-name>
        <servlet-class>com.bjpowernode.javaweb.servlet.StudentServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>studentServlet</servlet-name>
        <url-pattern>/servlet/student</url-pattern>
    </servlet-mapping>
    
</web-app>

第九步:给一个html页面,在HTML页面中编写一个超链接,用户点击这个超链接,发送请求,Tomcat服务器接受请求执行后台的HelloServlet程序

  • 这个文件不能放到WEB-INF目录里面,只能放到WEB-INF目录外面
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>student page</title>
</head>
<body>
    <!--这里的项目名是 "/xmm" 先写死,以后学了JSP可以动态获取-->
    <a href="/xmm/servlet/student">student list</a>
</body>
</html>

第十步:让IDEA工具去关联Tomcat服务器 , 关联的过程当中将webapp部署到Tomcat服务器当中

  • IDEA工具右上角,绿色小锤子右边有一个Add Configuration选项 , 在弹出的窗口中 , 点击左上角 " + " 添加 Tomcat Server --> local

    扫描二维码关注公众号,回复: 15275614 查看本文章
  • 设置服务器的Server参数: 服务器的名字 , 服务器的安装包, 服务器启动时的行为 , 代码改动时服务器的行为 , JRE的版本 , URL

  • 设置服务器的 Deployment 部署 webapp 的参数: 点击 " + " 添加 Artifact 指定要部署的web项目

    • 修改 Application context指定webapp应用的根也就是项目名为 “/xmm”

第十一步:启动Tomcat服务器

  • 在右上角有绿色的箭头,或者绿色的小虫子都能启动Tomcat服务器
  • 我们开发中建议点击小虫子采用debug的模式启动Tomcat服务器

Idea中改完 Servelt 的源代码后 , 默认情况下需重启服务器 , 如果不想重启服务器 , 需要在配置Tomcat服务器的Server参数进行配置(更新字节码文件选项)

  • 第十二步:打开浏览器,在浏览器地址栏上输入:http://localhost:8080/xmm/student.html访问Tomcat服务器上的资源

webapp的目录结构

WEB-INF目录

放在 WEB-INF 目录下的资源是受保护的 , 在浏览器上不能够通过路径直接访问 , 直接访问会出现404错误

  • **HTML、CSS、JS、image等静态资源一定要放到WEB-INF目录之外 **
webapproot(oa/crm)
       |--WEB-INF
       		  |------classes(存放字节码)
       		  |------lib(第三方jar包)
       		  |------web.xml(注册Servlet)
       |--html
       |--css
       |--javascript
       |--image
       ....

关于一个web站点的欢迎页面

概述

我们一般的访问方式是:http://localhost:8080/servlet06/login.html 这种方式是指定了要访问的就是login.html资源。

其实对于一个webapp来说,我们是可以设置它的欢迎页面的。

  • 如果我们访问 http://localhost:8080/servlet06 这个 web 站点,并没有指定具体的资源路径此时默认会访问你设置的欢迎页面。

手动设置欢迎页面(局部配置)

第一步:我在IDEA工具的web目录下新建了一个文件login.html

第二步:在web.xml 文件中进行了以下的配置 (在这个地方配置的属于局部配置)

注意:设置欢迎页面的时候,这个路径不需要以“/”开始。并且这个路径默认是从webapp的根下开始查找

<welcome-file-list>
    <welcome-file>login.html</welcome-file>
</welcome-file-list>

<!--多级目录, 在webapp根下新建page1,在page1目录下新建page.html页面-->
<welcome-file-list>
    <welcome-file>page1/page.html</welcome-file>
</welcome-file-list>

第三步:启动服务器,浏览器地址栏输入地址 http://localhost:8080/servlet06

一个webapp是可以设置多个欢迎页面的

  • 注意:越靠上的优先级越高。找不到的继续向下找。
<welcome-file-list>
    <welcome-file>page1/page2/page.html</welcome-file>
    <welcome-file>login.html</welcome-file>
</welcome-file-list>

Tomcat服务器默认配置欢迎页面(全局配置)

若我的文件名设置为 index.html 的时候,不需要在web.xml文件中进行配置欢迎页面。因为 Tomcat服务器 已经提前配置好了。

  • Tomcat服务器的全局欢迎页面是:index.html index.htm index.jsp。

在CATALINA_HOME/conf/web.xml文件中进行配置。(在这个地方配置的属于全局配置)

  • 注意原则:局部优先原则。(就近原则)
<!--
Tomcat服务器的全局欢迎页面是:index.html index.htm index.jsp。如果你一个web站点没有设置局部的欢迎页面,Tomcat服务器就会以index.html index.htm index.jsp作为一个web站点的欢迎页面。
-->
<welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

欢迎页可以是一个Servlet

欢迎页就是一个资源,既然是一个资源,那么可以是静态资源,也可以是动态资源。

  • 静态资源:index.html welcome.html …
  • 动态资源:Servlet类。

第一步:写一个Servlet

public class WelcomeServlet extends HttpServlet {
    
    
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.print("<h1>welcome to bjpowernode!</h1>");
    }
}

第二步:在web.xml文件中配置servlet

<servlet>
    <servlet-name>welcomeServlet</servlet-name>
    <servlet-class>com.bjpowernode.javaweb.servlet.WelcomeServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>welcomeServlet</servlet-name>
    <url-pattern>/fdsa</url-pattern>
</servlet-mapping>

第三步:在web.xml文件中配置欢迎页的 Servlet 对应的路径

<welcome-file-list>
    <welcome-file>fdsa</welcome-file>
</welcome-file-list>

猜你喜欢

转载自blog.csdn.net/qq_57005976/article/details/130008140