您当前的位置:首页 > 时尚 > 内容

如何用idea编写jsp(idea怎么调试jsp页面)

如何用idea编写jsp(idea怎么调试jsp页面)?如果你对这个不了解,来看看!

SpringBoot图文教程16—SpringBoot 多模块开发「web」「打包」,下面是路导a给大家的分享,一起来看看。

如何用idea编写jsp

有天上飞的概念,就要有落地的实现

概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍

先赞后看,养成习惯

SpringBoot 图文教程系列文章目录

SpringBoot图文教程1—SpringBoot+Mybatis 环境搭建SpringBoot图文教程2—日志的使用「logback」「log4j」SpringBoot图文教程3—「‘初恋’情结」集成JspSpringBoot图文教程4—SpringBoot 实现文件上传下载SpringBoot图文教程5—SpringBoot 中使用AopSpringBoot图文教程6—SpringBoot中过滤器的使用SpringBoot图文教程7—SpringBoot拦截器的使用姿势这都有SpringBoot图文教程8—SpringBoot集成MBG「代码生成器」SpringBoot图文教程9—SpringBoot 导入导出 Excel 「Apache Poi」SpringBoot图文教程10—模板导出|百万数据Excel导出|图片导出「easypoi」SpringBoot图文教程11—从此不写mapper文件「SpringBoot集成MybatisPlus」SpringBoot图文教程12—SpringData Jpa的基本使用SpringBoot图文教程13—SpringBoot+IDEA实现代码热部署SpringBoot图文教程14—阿里开源EasyExcel「为百万数据读写设计」SpringBoot图文教程15—项目异常怎么办?「跳转404错误页面」「全局异常捕获」前言

本文已经收录码云仓库:https://gitee.com/bingqilinpeishenme/Java-Tutorials 本文涉及源码下载地址:https://gitee.com/bingqilinpeishenme/multi-module-demo

什么是多模块开发?如图所示,项目中每一个包对应都是一个完整的项目,在IDEA中称之为模块,每一个模块都有完整的项目结构:独立的pom文件,独立的配置文件,独立的编译文件输出模块等等。

那么这样项目结构的项目是如何设计出来的呢?

SpringBoot 多模块开发

技术选型:

SpringBoot MybatisPlus MybatisPlus教程见:SpringBoot图文教程11—从此不写mapper文件「SpringBoot集成MybatisPlus」 Mysql 多模块开发效果图如下:

父级工程开发

父级工程可以用来统一管理所有项目的依赖,如图,如果在父级项目中有一个mysql依赖,那么所有继承这个父级项目的子项目中也会继承到mysql的依赖

1.创建一个Project

2.对IDEA做一些项目基本的配置

字符编码配置注解生效激活Java编译版本选择

3.写父级项目的pom文件

pom文件的详细内容见注释

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion><!-- 配置SpringBoot的父级项目--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.lby</groupId> <artifactId>multi-module-demo</artifactId> <version>1.0-SNAPSHOT</version> <!-- packaging 父级项目的类型是pom --> <packaging>pom</packaging> <!-- properties 定义pom的全局变量 一般用于定义依赖的版本号 --> <properties> <java.version>1.8</java.version> <!-- lombok-version 这个标签是自定义的可以随便写 本质上就是一个变量 --> <lombok-version>1.18.4</lombok-version> </properties> <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <!-- 版本号通过$获取properties中定义的版本号--> <version>${lombok-version}</version> <scope>provided</scope> </dependency> </dependencies> <!-- dependencyManagement 在 dependencyManagement 中配置的依赖 只是一种声明 声明了版本号 不会被项目继承下来【相关的jar包不会被子项目下载到项目中】 子项目如果想要继承到dependencyManagement中的依赖 需要单独在配置 只不过子项目如果继承 dependencyManagement 中的依赖 可以不写版本号【子项目中依赖版本 按照父项目中dependencyManagement 中配置下载】 --> <dependencyManagement> <dependencies> <!--如果是Mybatis写成Mybatis即可--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.1.tmp</version> </dependency> <!--数据源--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.19</version> </dependency> <!--mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency> </dependencies> </dependencyManagement></project>

注意:

父级项目的packing必须设置为 pomdependencies 和 DependencyManagement 的区别 dependencies 在当前项目中引入依赖,如果子项目继承了该项目,也会在子项目中引入依赖 DependencyManagement 只是声明依赖,并不实际引入,因此子项目需要显式声明需要用到的依赖 如果在子项目中声明依赖,是不会从父项目中继承下来的,只有在子项目中写了该依赖项,并且没有执行具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom 如果子项目指定了版本号,那么会使用子项目中指定的jar版本子项目开发

子项目开发的步骤如下:

基于Project创建module 修改pom 写配置,没有可以不写 写代码

1.创建multi-entity

1.基于Project创建module

创建完multi-entity后打开pom可以看到

此时打开父级项目的pom 会看到

2.修改pom

完整的multi-entity项目的pom如下:

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <!-- 子项目继承父项目的配置 parent --> <parent> <artifactId>multi-module-demo</artifactId> <groupId>com.lby</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>multi-entity</artifactId> <dependencies> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> </dependency> </dependencies></project>

3.在项目中写入实体类

package com.lby.entity;import com.baomidou.mybatisplus.annotation.IdType;import com.baomidou.mybatisplus.annotation.TableId;import com.baomidou.mybatisplus.annotation.TableName;import lombok.Data;@TableName("cmfz_admin")@Datapublic class Admin { /** * 主键属性 @TableId * * value 该属性对应的数据库表中的字段名 * type 主键自增的类型 AUTO 代表自动递增 */ @TableId(value = "id",type = IdType.AUTO) private Integer id; /** * 非主键属性 @TableField * @TableField("username") 参数为该属性对应的数据库表中的字段名 * */ private String username; private String password; private String salt;}

2.按照上述步骤创建 multi-dao

对于dao模块而言,不同的地方在于,在multi-dao中需要使用到 multi-entity中的实体类,但是怎么在dao模块中使用到另一个项目中的实体类呢?

将multi-entity像依赖一样导入 multi-dao中

multi-dao完整pom文件

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>multi-module-demo</artifactId> <groupId>com.lby</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>multi-dao</artifactId> <dependencies><!-- 在dao中引用entity 可以在dao的代码中直接导入entity中的类和方法 --> <dependency> <groupId>com.lby</groupId> <artifactId>multi-entity</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <!-- 如果配置依赖在父项目的 dependencyManagement 有--> <!-- 可以不写版本号 版本号继承父项目中的--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> </dependency> </dependencies></project>

在multi-dao写入dao接口

package com.lby.dao;import com.baomidou.mybatisplus.core.mapper.BaseMapper;import com.lby.entity.Admin;public interface AdminDao extends BaseMapper<Admin> {}

3.创建 multi-service 模块

完整pom文件

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>multi-module-demo</artifactId> <groupId>com.lby</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>multi-service</artifactId> <dependencies><!-- multi-service中需要引入 dao模块--> <dependency> <groupId>com.lby</groupId> <artifactId>multi-dao</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies></project>

写入业务类

package com.lby.service;import com.lby.dao.AdminDao;import com.lby.entity.Admin;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;/** * 之所以能够直接使用@Service注解 * 是因为 multi-service 模块 依赖了 multi-dao * multi-dao 依赖了 multi-entity * multi-entity 中的 MybatisPlus 依赖在项目中导入了Spring的jar包 */@Servicepublic class AdminService { @Autowired private AdminDao adminDao; public List<Admin> adminList(){ return adminDao.selectList(null); }}

4.创建 multi-controller 模块

multi-controller 模块是启动类所在的模块 所以我们把配置文件 启动类以及SpringBoot集成maven的插件都放在这个项目中

1.完整的pom文件

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>multi-module-demo</artifactId> <groupId>com.lby</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>multi-controller</artifactId> <dependencies><!-- controller中需要引入service--> <dependency> <groupId>com.lby</groupId> <artifactId>multi-service</artifactId> <version>1.0-SNAPSHOT</version> </dependency><!-- web--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--测试--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <!-- spring-boot-maven-plugin 插件配置在启动类所在的模块--> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build></project>

2.application配置文件配置

#配置端口号server: port: 8802#数据源的配置spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/cmfz?useUnicode=true&characterEncoding=UTF-8 username: root password: 123456 type: com.alibaba.druid.pool.DruidDataSource#mybatis-plusmybatis-plus: mapper-locations: classpath:mapper/*Mapper.xml# root 全局日志等级 默认是info 可以修改 debug warn errorlogging: level: root: info com.baizhi: debug

3.启动类代码

package com.lby;import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@MapperScan("com.lby.dao")@SpringBootApplicationpublic class AppRun { public static void main(String[] args) { SpringApplication.run(AppRun.class,args); }}

4.controller代码

package com.lby.controller;import com.lby.entity.Admin;import com.lby.service.AdminService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestControllerpublic class AdminController { @Autowired private AdminService adminService; @RequestMapping("adminList") public List<Admin> adminList(){ return adminService.adminList(); }}

5.启动项目

通过启动类启动项目

访问地址:http://localhost:8802/adminList 可以看到如下效果

如果要使用插件启动 需要先对父项目进行 clean 和 install操作

6.测试

编写测试类

运行测试方法 效果如下

7.打包项目

注意:启动类在哪个模块,就通过哪个模块打包

通过maven打包项目

找到打包好的项目 通过java -jar运行项目

访问地址:http://localhost:8802/adminList 可以看到如下效果

常见问题处理

1.循环依赖问题

错误信息提示:

Error:java: Annotation processing is not supported for module cycles. Please ensure that all modules from cycle [qrcode-common,qrcode-manager-pojo] are excluded from annotation processing

原因分析:循环依赖 死循环了

解决方案:修改模块中的依赖

2.IDEA修改pom不生效问题

在使用IDEA开发多项目的时候发现这样一个问题:修改pom文件之后,不管怎么刷新都不生效

解决方案:重启 IDEA 即可

总结

本文涉及源码下载地址:https://gitee.com/bingqilinpeishenme/multi-module-demo

恭喜你完成了本章的学习,为你鼓掌!如果本文对你有帮助,请帮忙点赞,评论,转发,这对作者很重要,谢谢。

让我们再次回顾本文的学习目标

掌握SpringBoot中多模块开发

要掌握SpringBoot更多的用法,请持续关注本系列教程。

求关注,求点赞,求转发

欢迎关注本人公众号:鹿老师的Java笔记,将在长期更新Java技术图文教程和视频教程,Java学习经验,Java面试经验以及Java实战开发经验。

idea怎么调试jsp页面

#头条创作挑战赛#

10.2 Filter快速入门10.2.1 开发步骤

进行 Filter 开发分成以下三个步骤实现:

定义类,实现 Filter 接口,并重写其所有方法配置 Filter 拦截资源的路径:在类上定义 @WebFilter 注解。而注解的 value 属性值 /* 表示拦截所有资源在 doFilter 方法中输出一句话,并放行 package web.filter; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.IOException; /** * @Author 晨默 * @Date 2022/9/11 10:47 */ // 步骤2: @WebFilter("/*") public class FilterDemo1 implements Filter { // 步骤1 @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { // 步骤3 System.out.println("FilterDemo1...."); // 这语句代表对资源进行放行,允许访问本该访问的资源 filterChain.doFilter(servletRequest,servletResponse); } @Override public void destroy() { } }10.2.2 代码演示对 pom.xml 文件进行配置,只需要引进 tomcat插件 和 servlet 的依赖坐标

pom.xml 具体如下所示:

<?xml version="1.0" encoding="UTF-8"?> <!-- $Id: pom.xml 642118 2008-03-28 08:04:16Z reinhard $ --> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <packaging>war</packaging> <name>FilterDemo</name> <groupId>org.example</groupId> <artifactId>FilterDemo</artifactId> <version>1.0-SNAPSHOT</version> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.encoding>UTF-8</maven.compiler.encoding> <java.version>16</java.version> <maven.compiler.source>16</maven.compiler.source> <maven.compiler.target>16</maven.compiler.target> </properties> <build> <plugins> <!-- Tomcat插件 --> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <!-- 访问端口号 --> <port>5050</port> <path>/</path> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> </dependencies> </project>报错警示:会出现 Java 不支持 Java5 版本

此时需要在 项目结构 中的模块中设置编译语言,与使用的语言版本一直即可,

编写 hello.jsp 页面内容如下: <%-- Created by IntelliJ IDEA. User: 晨默 Date: 2022/9/11 Time: 11:05 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <h1>Hello Filter!</h1> </body> </html> 演示效果当 过滤器的 dofilter() 中没有编写 filterChain.doFilter(servletRequest,servletResponse); 语句时,访问 hello.jsp 页面 没有任何效果,在 idea 控制台 会打印如下内容:

编写了 filterChain.doFilter(servletRequest,servletResponse); 后,hello.jsp 页面就可以正常显示了


声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,谢谢。

上一篇: 在爱情的路上跋涉 到头来却只剩自己的星座

下一篇: 联想手机p70技术参数,联想p70手机



猜你感兴趣

推荐阅读

网站内容来自网络,如有侵权请联系我们,立即删除! | 软文发布 | 粤ICP备2021106084号