900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > IDEA 整合 Tomcat 开发 Javaweb 工程 -7-28

IDEA 整合 Tomcat 开发 Javaweb 工程 -7-28

时间:2019-01-26 00:15:41

相关推荐

IDEA 整合 Tomcat 开发 Javaweb 工程 -7-28

静态 Web 工程和动态 Web 工程

Web 1.0时代 - 静态 Web 工程

只有 HTML ,CSS 网页中的内容都是写死的,用户只能浏览,不能修改

Web 2.0 时代 - 动态 Web 工程

网页中内容都是动态的,用户可以查询,可以增删改

Web 3.0 时代 - 动态 Web 工程

开发环境

IDEA 整合 Tomcat 开发 Javaweb 工程

!!!这是提醒我自己的得换一个

需要联网

Java 工程

默认访问 index.jsp 目录

访问自己的目录

新建

这里创建的是 Home 目录

不行的话就在 maven 里面 清除 编译 先停掉 Tomcat

compile 只编译 java 代码 ,所以需要 package 打包 ,然后 将这个javaweb-01 .war 布置到Tomcat 里面 会自动解包

JavaWeb 工程的配置文件 web.xml

工程目录结构

所有目录都在 src 里面

src/main/java 主工程的java代码

src/main/resources 主工程的资源文件

src/main/webapp 主工程与前端相关的文件(jsp | html | css | js | 图片 | ...)

src/test/java 主工程的

src/test/resources

compile -- target/classes

package 打包 先做 complie

右击src 新建 会显示四个目录 把里面目录 全部双击 建立起来

就变成这个样了

什么是 jsp

Java Server Page Java 服务端页面

可以写 Java 代码的 HTML 文件

运行原理

重新运行

动作幅度从上到下越来越大

改变默认的选择

外部运行和内部运行

外部运行

打包 package

复制到 webapps里面

运行 startup.bat

会自动解包

这里是已经解包好的图

正常没有解包是没有 javaweb-01 文件夹

解包好

试试外部运行 外部需要加 javaweb-01 目录名

在idea 内部运行 不需要 加 javaweb-01

外部运行 需要一直启动 startup.bat

<%@ page import="java.util.ArrayList" %><%@ page import="java.util.List" %><%--Created by IntelliJ IDEA.User: LenovoDate: /7/28Time: 9:52To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>Home</title></head><body><%//这里面可以写 java 代码List<String> list =new ArrayList<>();list.add("张飞");list.add("赵云");list.add("关羽");%><%-- 这里可以写 HTML CSS JS 代码 ,不能写 Java 代码--%><table border="1"><thead><th>编号</th><th>姓名</th></thead><tbody><%for (int i = 0; i < list.size(); i++) {%><tr><td><%= (i+1) %></td><td><%= list.get(i) %></td><%-- <%= 对Java 取值输出的代码 --%></tr><%}%></tbody></table></body></html>

试试外部运行 外部需要加 javaweb-01 目录名

Tomcat文件里面 哪些可以删

webapps 里面除了自己的文件都可以删掉 (提高性能)

work 里面 可以删掉Catalina

为什么Tomcat 里面 可以 编译 java 程序

HTML + CSS + JS

是因为 Home.jsp 通过 Tomcat 执行引擎翻译变成了 Home_jsp.java 再通过 JDk编译器编译变成了 Home_jsp.class

监测 jsp文件发生变化会重新翻译 编译

加了一行 刘备 保存

原来的 修改时间是7.28

原来的浏览器

现在的浏览器

运行后 修改时间是 11:39

这就是监测 jsp文件 发生变化会重新 翻译 编译

运行后 会出现 work 运行目录 可以删除里面的Catalina 但是,重新运行的话需要重新

假如不删的话只需要

什么是 servlet

需要安装这个三方库

换一个版本!!!!!

打包的时候跳过单元测试方法

开始敲代码

JSP 可以写 Java + HTML

JSP 被Tomcat 翻译成 Java 文件 --> Servlet

自己写Servlet

package com.iweb.servlet;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;public class Servlet01 extends HttpServlet {//需要继承这个类 , 这个类是三方库里面的// 重写 doGet 方法 直接打 doGet 回车// 怎么让浏览器访问这个类,需要给这个类绑定一个地址@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("Hello servlet");}}

给 Servlet 类配置一个网络URL地址的方式有2种

1.在web.xml 文件中配置(老版本中使用的)

2.使用注解配置(Servlet-api 三方库的版本需要 4.0以上)

报错的话

看这个人的链接

(1条消息) 配置过程中常见的错误+url地址到Servlet程序的访问和原理_你好牛蛙的博客-CSDN博客_url 访问servlet

我的是这样子解决的

变成这样子

运行

在网页

输入

会在这里显示 s1 和 s2 所显示的东西

@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("hello servlet");// 假设这一行数据从Dao获取的List<String> list = new ArrayList<>();list.add("张飞");list.add("关羽");list.add("赵云");list.add("马超");list.add("刘备");// 把数据放在 req 一起带过去req.setAttribute("list",list);//k 数据的名字字符串 v 指针名list// 把数据交给 jsp 展示// 获取一个调度器对象RequestDispatcher dispatcher = req.getRequestDispatcher("Home.jsp");// 调用调度器dispatcher.forward(req,resp);}

从下面取出

为了 html 代码和 java 代码 分开

安装这两个三方库

<%--Created by IntelliJ IDEA.User: LenovoDate: /7/28Time: 9:52To change this template use File | Settings | File Templates.--%><%@ taglib prefix="c" uri="/jsp/jstl/core"%><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>Home</title></head><body><%//这里面可以写 java 代码// List<String> list =new ArrayList<>();// list.add("张飞");// list.add("赵云");// list.add("关羽");%><%-- 这里可以写 HTML CSS JS 代码 ,不能写 Java 代码--%><table border="1"><thead><th>编号</th><th>姓名</th></thead><tbody><%-- <%--%><%-- for (int i = 0; i < list.size(); i++) {--%><%-- %>--%><%-- <tr>--%><%-- <td><%= (i+1) %></td>--%><%--<td><%= list.get(i) %></td>&lt;%&ndash; <%= 对Java 取值输出的代码 &ndash;%&gt;--%><%-- </tr>--%><%-- <%--%><%-- }--%><%-- %>--%><c:forEach items="${list}" var="user" > <%-- 遍历list 每遍历一个将list 取出值给 user--%><tr><td>${user.id}</td><td>${user.name}</td></tr></c:forEach></tbody></table></body></html>

package com.iweb.servlet;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.util.ArrayList;import java.util.List;@WebServlet(urlPatterns = "/s1")public class Servlet01 extends HttpServlet {//需要继承这个类 , 这个类是三方库里面的// 重写 doGet 方法 直接打 doGet 回车// 怎么让浏览器访问这个类,需要给这个类绑定一个地址// private Servlet01(){// System.out.println("创建Servlet对象");// }@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("hello servlet");// 假设这一行数据从Dao获取的List<User> list = new ArrayList<>();list.add((new User(1,"张飞")));list.add((new User(2,"关羽")));list.add((new User(3,"赵云")));list.add((new User(4,"马超")));list.add((new User(5,"刘备")));// 把数据放在 req 一起带过去req.setAttribute("list",list);//k 数据的名字字符串 v 指针名list// 把数据交给 jsp 展示// 获取一个调度器对象RequestDispatcher dispatcher = req.getRequestDispatcher("Home.jsp");// 调用调度器dispatcher.forward(req,resp);}public class User{private Integer id;private String name;public User() {}public Integer getId() {return id;}public String getName() {return name;}public User(Integer id, String name) {this.id = id;this.name = name;}}}

这时候不支持 ${}

直接请求Home.jsp 没有数据

需要请求 Servlet (url="s1")

Home.jsp

<%--Created by IntelliJ IDEA.User: LenovoDate: /7/28Time: 9:52To change this template use File | Settings | File Templates.--%><%@ taglib prefix="c" uri="/jsp/jstl/core"%><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>Home</title></head><body><%//这里面可以写 java 代码// List<String> list =new ArrayList<>();// list.add("张飞");// list.add("赵云");// list.add("关羽");%><%-- 这里可以写 HTML CSS JS 代码 ,不能写 Java 代码--%><table border="1"><thead><th>编号</th><th>姓名</th><th>性别</th></thead><tbody><%-- <%--%><%-- for (int i = 0; i < list.size(); i++) {--%><%-- %>--%><%-- <tr>--%><%-- <td><%= (i+1) %></td>--%><%--<td><%= list.get(i) %></td>&lt;%&ndash; <%= 对Java 取值输出的代码 &ndash;%&gt;--%><%-- </tr>--%><%-- <%--%><%-- }--%><%-- %>--%><c:forEach items="${list}" var="user" > <%-- 遍历list 每遍历一个将list 取出值给 user--%><tr><td>${user.id}</td><td>${user.name}</td><c:if test="${user.sex == 0 }"> <%--test = 条件--%><td>女</td></c:if><c:if test="${user.sex == 1 }"><td>男</td></c:if></tr></c:forEach></tbody></table></body></html>

servlet01

package com.iweb.servlet;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.util.ArrayList;import java.util.List;@WebServlet(urlPatterns = "/s1")public class Servlet01 extends HttpServlet {//需要继承这个类 , 这个类是三方库里面的// 重写 doGet 方法 直接打 doGet 回车// 怎么让浏览器访问这个类,需要给这个类绑定一个地址// private Servlet01(){// System.out.println("创建Servlet对象");// }@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("hello servlet");// 假设这一行数据从Dao获取的List<User> list = new ArrayList<>();list.add((new User(1,"张飞",0)));list.add((new User(2,"关羽",0)));list.add((new User(3,"赵云",1)));list.add((new User(4,"马超",1)));list.add((new User(5,"刘备",0)));// 把数据放在 req 一起带过去req.setAttribute("list",list);//k 数据的名字字符串 v 指针名list// 把数据交给 jsp 展示// 获取一个调度器对象RequestDispatcher dispatcher = req.getRequestDispatcher("Home.jsp");// 调用调度器dispatcher.forward(req,resp);}public class User{private Integer id;private String name;private Integer sex;public User() {}public Integer getId() {return id;}public String getName() {return name;}public void setId(Integer id) {this.id = id;}public void setName(String name) {this.name = name;}public Integer getSex() {return sex;}public void setSex(Integer sex) {this.sex = sex;}public User(Integer id, String name, Integer sex) {this.id = id;this.name = name;this.sex = sex;}}}

总结

1.创建javaweb-02工程

安装依赖

servlet-api

jstl

standard

修改 web.xml 文件 (配置首页,替换版本让 EL 表达式生效)

创建 Servlet 类 ,注册 URL 地址

创建 JSP

创建一个商品类 Product

id

name

price

stock

在Servlet 中创建一个list ,添加5个商品对象,调用JSP传递list

在jsp中用jstl 和EL 表达式把数据取出来遍历到网页

如果stock = 0 显示库存不足

把 shop-dao 工程打包,作为三方库安装给javaweb-02工程

创建 Servlet 类,注册URL地址

调用 shop-dao 工程的 ProductDao 接口的工厂方法,拿到 ProductDao 的子类对象调用查询方法

返回商品list

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。