小白教你做网站 JSP 终结篇

昨天六一儿童节正好碰上大四毕业巡礼 不少学姐拍毕业照 穿和服 哈哈 (真想加个表情 可惜没有… 这个功能头条要改进啊!) 唉! 该走的终究会走 开始聊正事

昨天告诉大家要做好准备了 看本文章请先阅读这里:

今天给大家讲解JSP后台处理的详细过程 直接上图

运行过的同学应该都知道 网站是从这里开始运行的 我们就从这里开始讲

首先 点一下上边绿色的按钮 eclipse会带动我们配置好的阿帕奇服务器开启 然后会从当前这个叫Shouye.java的Java程序开始执行 这个程序有两个方法(也就是函数) 分别处理按不同方式发送过来的请求 因为是第一次执行 所以默认执行doGet这个方法 也就是下图蓝色区域

其中 这四行语句是用来获取Session参数的

什么是Session呢? 这里应该好好讲解一下

JSP有以下四个内置对象

你可以这样理解 它们四个是用来携带信息的 比如:你登录后你的用户名得记下来吧 要不欢迎界面怎么知道你是谁? 还有很多重要信息需要它们来传递 它们的生命周期是不同的

其中application的生命周期最长 它会一直活到服务器关闭 只要你服务器不关它就不会死 你说变态不?

其他两个 上图有详细的解释 都不难理解 而session在当前会话有效 意思就是只要你浏览器不关 它就一直活着 (前提服务器不关) 现在你们肯定觉得很抽象 后面你们就会慢慢明白了

程序继续执行 上边分别把叫n和N的session赋值给字符串类型的n和N

然后 判断他们是否存在 这几句的意思是 如果n不等于null(null就是不存在的意思)就跳转到yonghuok.jsp这个页面去 这个页面就在WebContent这个文件夹里 然后终止程序

如果n不存在就继续执行 判断N是否存在 功能类似 如果存在就跳转到ok.jsp 终止程序 如果这两个都不存在就执行 下面那两句 意思是:创建一个叫pifu的session 内容是css/main.css 下一句:跳转到login.jsp

好现在整体解释一下 这个n的内容其实就是普通用户登录成功后保存的用户名 N的内容就是管理员登录成功保存的用户名 yonghuok.jsp就是普通用户的欢迎界面 ok是管理员的欢迎界面 意思就是:上来先看你名字是用n还是N带过来的 如果你是n带过来的 好 你是用户 转到用户界面 N带来的就是管理员 什么都没有就是未登录 领个皮肤乖乖去登录 走你 这个皮肤就是CSS的路径(CSS是管外部美观的) 每个页面都是靠获取名叫pifu的这个session来获取的 默认是没有的 如果你不从这个界面开始执行就会出现这种情况

是不是没法看了 其实有时你百度的时候也会出现这种情况 加上皮肤是这个样子的

是在这里接收皮肤的(每个登录后的页面都有)

首次打开就是未登录 所以乖乖去登录吧!

这里为了解释代码 所以从注册开始

你发现有的信息不填或格式不对是不能注册的 这是前台JavaScript做的 是一层保护 因为不能什么东西都往数据库里填吧! 这里不再详述 简单解释一下 这是一层很弱的保护 因为你可以在浏览器的设置里禁用JavaScript

但是你禁用以后 你会发现你连qq空间都进不去了

言归正传 你看login.jsp源代码第65行 刚才你点的那个注册按钮其实是一个超链接 一点就跳转到zhuce.jsp了

再来到zhuce.jsp 别看内容很多 一折叠就剩这一点

这是一个表单 蓝色部分action的意思是提交后交给Shouye(就是咱们一开始执行的那个) 后边method是提交方式是post (一会你就明白了)

每个控件都有一个name 下边这一部分:第一行type表示类型 hidden是隐藏域 (就是页面里不显示但存有数据)第一行的意思是这是一个隐藏域 名字叫key 内容是insert第二行:submit是提交按钮 点击后会把表单里的所以name和对应的value都提交的表单头里的位置(这个界面是提交到Shouye里的)

第三行:reset是重置按钮 点击后会把表单里已填的内容全部清空回到初始状态

第四行:还是一个超链接 还是跳转到Shouye 因为没有登录session不存在 还会跳的login.jsp

这里点击注册后会提交到Shouye 所以我们再回到Shouye来看 因为上边写的是post提交方式

所以会执行doPost这个方法

你会发现里边有两个if 其实就相当于两把锁 然后通过刚才传过来的那个key(隐藏域里的)相当于用钥匙来试锁 刚才我们传过来那个key的内容是insert 所以会执行下图所示区域的代码

就是先把传过来的值都保存下来 然后判断其中三个(id name和pass)是不是空的 如果不是空的执行下边的代码 你会发现会调用Userbean里的insert_xinxi和insert方法 要用这些方法就得导入这个类

开头已经导入了

然后我们去看lr.bean.Userbean 就在这里

我们之前说过 这个文件夹下的程序是用来连接数据库来操作数据的

这四句就是要连接数据库的信息 都是固定的 其中第一句在这里

第二句在这里 唉 我找不到了… 不过不要紧你可以去百度

为什么要讲这两个呢 直接记住不就完了? 因为用的数据库软件可能不一样 对应的这两条信息也不一样 而且之前导入那个jar包也是 例如:如果用的是sql server 就需要导入其他包 这四条信息也要换

回到程序继续讲 u和p分别对应你MySQL里的连接名和密码 在这里

继续看下边 你会发现有很多方法 折叠后还有这么多

我们第一个调用的是这个方法

上边是传来的参数 这两句就是我们之前定义的连接信息

这是一条sql语句 意思就是向xinxi这个表里插入信息 有人会问后边一堆问号什么意思?

下边给出了 传给第一个“?” name 第二个是id 以此类推…

然后 执行sql语句 上边定义i初始为0 但是如果执行成功 i 的值肯定大于0 然后返回 i的值

下一个方法也是类似 只是参数和名字不一样 这里不再详述

然后我们继续看Shouye这里

这下应该明白了吧 i和j就是刚才调用那两个方法的返回值 如果都大于0就说明执行sql语句成功了吧

然后跳转到zhuceok.jsp 这个界面里就一句 一个超链接 点击后跳转到 Userservlet

其实这里应该改成让它跳转到Shouye的 因为你会发现Userservlet里又是一大堆锁 当它没有获取到session的时候没有默认跳转到login.jsp(就是登录界面)那里 但是我们执行的时候 确实又跳转到了登录界面 这是什么原因呢? 这是我们的过滤器就该闪亮登场了

我们之前说的 filter里放的是过滤器 当时都不知道是干什么用的

打开叫Three的过滤器 你发现它也是一个Java程序

这一句表示 哪些页面需要过滤

Userservlet在里边吧 然后内容还是相似 如果N和n都不存在 就跳转到login

这个问题 其实不算个问题 因为那个Shouye是我后来加的 有的地方没改 当时我测试的时候也没发现

直到今天给你们细讲的时候才发现 哈哈!

这四个过滤器 建议大家好好看看

第一个是用来转码的 否则汉字会出现乱码

第二个控制 只有session N存在时才能访问这些界面(就是管理员登录)

第三个刚才看过了 是用户和管理员通用的页面

第四个就是只有用户才能访问的页面

好 注册我们讲完了 下面来讲登录 还回到login.jsp页面

你会发现 又是一个表单 提交到Shouye 提交方式是post 看到这个 你们应该马上就知道了 应该去执行Shouye里的doPost方法 登录按钮是submit 隐藏域里藏的钥匙key是select

好了 这就清楚了 来看Shouye吧 一看提交方式是post 钥匙是select 所以应该开这把锁吧

开开之后 还是老一套 把表单里的内容取出来 判断是不是空的 然后调用Userbean里的select方法

来到Userbean 你会看到两个select方法 调用那个呢? 看参数 这里调用的是两个参数的 而且返回值也不一样 就是这个方法

还是老一套 连接数据库 传个参数 执行sql语句 都一样 不过这里注意

执行sql语句后它返回了一个数组 它取了数组里的permissin这个字段

因为sql语句是在user表里做查询 找到name=传来的name pass=传来的pass 这些字段组成一个数组rs 因为user里只有三个字段 所以这里rs数组的内容是[\’name\’ \’pass\’ \’permissin\’]

通俗的说 就是去表里查名字叫? 密码是?? (?就是传来的name ??就是传来的pass) 为什么要指定密码呢 直接查名字不就行了? 因为这是登录啊! 大哥! 不查密码怎么知道你密码对不对 就跟别人知道你QQ好就能上你QQ 那还了得? 所以查到了说明用户名对了 密码也对了 查不到说明有一个错了 然后把第三个字段的值(就是身份值)返回

继续看Shouye的那把锁

首先判断传回来那个身份是不是空的 如果是 说明没查到结果 那还说什么 直接走你 登录失败;

如果不是空的说明查到了 有这个人 而且密码是对的 再来判断是管理员啊还是用户啊 如果是管理员 就创建一个session N(注意!session就是从这里创建的)里边放你的名字 跳转到ok页面 如果不是管理员 那就是用户 创建个session n 放入你的名字 去yonghuok页面 现在大家应该明白 一开始获取的session N和n是从哪来的了吧!

额 讲了这么多 不知道你们理解没有 其实讲完第一个注册功能 你们就应该能明白整个流程了 你会发现注册和登录有很多地方是一样一样的 无非一个是插入 一个查找

后面的功能实现方法都是类似的 大家举一反三 按照这个流程走一遍就都明白了

咱们具体来两个例子

来看ok页面

一看到<a> 就知道是个超链接 跳转到Newservlet页面 ?后边是传的参数 key就是上边说的钥匙 select是key的值

这里你们记住 只要不是form表单 并且通过post提交的 都是要调用doGet方法的!!! 就是这个

好了 该讲的都讲完了 还是看大家的理解了 反正这个流程就是重复重复再重复的 再讲也没有什么什么意义了 JSP的课程就讲到这里了 后边可能会有续集 因为有些同学可能有地方不明白 不过这也得看你们的回复来决定了…

还有就是 下面我会开始讲ASP.NET 跟JSP类似 只不过它是用C#做后台处理的 昨天说了

然后它比JSP更简单 所有东西都是通过鼠标点击拖动的 几乎不用怎么写代码 (但是ASP貌似没多少人用 不知道为什么)

这里先给你们 ASP的开发工具吧 http://pan.baidu.com/s/1gfx0Rxp

下载好后执行这个程序安装

这是微软的开发工具 自带一大堆插件 没办法谁让人家是微软呢 系统都是人家的…

总之 建议大家先学习JSP 学会之后你会发现其他的ASP啊 PHP啊什么的都不是事

这里先给大家透漏一下后续课程吧 学完ASP后 我们将会开始学习PHP 这是目前比较火的语言 一门独立的网站编程语言 有集成的开发环境 从我学的课程学时中也能看出来对它的重视!

篇幅较长 一天内完成 有个别错字请见谅!

今天就说到这吧 有问题记得给我留言哦! 再见!!!

推荐一款GitHub10k+点赞Spring Boot快速开发企业级Admin管理后台

Erupt 是一个低代码 全栈类 框架,它使用 Java 注解 动态生成页面以及增、删、改、查、权限控制等后台功能。

零前端代码、零 CURD、自动建表,仅需 一个类文件 + 简洁的注解配置,快速开发出企业级 Admin 管理后台。

提供企业级中后台管理系统的全栈解决方案,大幅压缩研发周期,专注核心业务。

完美取代 代码生成器,开发后台管理系统更优解!

  • 易于上手:会简单地 Spring Boot 基础知识即可
  • 使用简单:仅需了解 @Erupt 与 @EruptField 两个注解即可上手开发
  • 代码简介:前端零代码,后端 template、controller、service、dao 都不需要,仅需一个类文件即可
  • 敏捷开发:仅单个.java文件即可实现后台管理功能,专注业务与核心功能的研发
  • 快速迭代:需求变更仅需修改或添加注解配置即可,迭代速度比需求讨论速度还快
  • 功能强大:动态条件处理,支持增删改查等功能代理接口,Session存储机制选择,行为日志记录等
  • 自动建表:依托于JPA可自动帮你完成数据库建表相关工作
  • 低侵入性:几乎所有功能都围绕注解而展开,不影响Spring Boot其他功能或三方库库的使用
  • 多数据源:支持:MySQL、Oracle、SQL Server、PostgreSQL、H2,甚至支持 MongoDB
  • 大量组件:滑动输入、时间选择、一对多、图片上传、代码编辑器、自动完成、树、多对多、地图等23类组件
  • 丰富展示:普通文本、二维码、链接、图片、HTML、代码段、iframe、swf等
  • 代码生成:erupt代码已经足够简洁,代码生成器可进一步提升开发效率
  • 高扩展性:支持自定义数据源实现、自定义页面、动态权限管理、生命周期函数、自定义OSS等
  • 界面美观:每个交互都精心设计,产品思维打磨,只为了更好的操作体验
  • 权限管理:用户管理、角色管理、组织管理、菜单管理、登录日志、操作日志等
  • 高安全性:可靠的安全机制,登录白名单,权限验证,注解项检查,细颗粒度权限控制,为你的数据保驾护航
  • 前后端分离:后端与前端可分开部署
  • 响应式布局:支持PC端手机端等各种规格的设备中使用
  • 无需二次开发:仅需引用 jar 包即可 !
  • 支持扩展页面:可开发自定义页面,自定义弹出层,且支持:原生H5 / Freemarker / Thymeleaf等方式渲染

无论开发怎样的系统,都需要配套的管理后台做数据支撑,是软件开发中必不可少的一环,但实际开发中存在着无法规避的痛点,如:开发效率低下、接口对接繁琐、界面差强人意、代码重复、有安全漏洞,导致开发成本极高。

虽然近些年来 代码生成器 成了后台开发的新宠,但它真的是后台开发的最优解吗?代码生成器的本质还是生成繁琐的前端与后台代码,一旦修改后期生成的代码很难合并,想想 Mybatis-Generator,基本上就是一次性的东西,虽然减轻了部分工作,可解决方式并非最佳。

开发后台管理系统大部分情况下只想做个普通的增删改查界面,用于数据管理,类似下面这种:

@Erupt(name = \”简单的例子\”,power = @Power(importable = true, export = true))@Table(name = \”t_simple\”) //数据库表名@Entitypublic class Simple extends BaseModel {

}

功能体验

这个界面虽然用 Vue + Ant Design + SSM 也能做出个大概,但仔细观察会发现它有大量细节功能如:

  • 有按钮可以查询、新增、批量删除、excel 导入导出
  • 可以对数据做筛选、隐藏某列、按某列排序
  • 表格有分页与汇总,可预览单行数据
  • 多种组件、有校验规则

全部实现这些仅前端就需要大量的代码,后端的接口与业务逻辑更不在少数。

但可以看到,用 erupt 只需要 30几行 代码就能完成,

完全不需要了解 Angular / React / Vue / Jquery

而且不需要了解 JavaScript / HTML / CSS

甚至不需要了解 Spring MVC / Mybatis / SQL

即便没学过 erupt 也能猜到大部分配置的作用,只需要简单配置就能完成所有后台页面的开发。

这正是建立 erupt 的初衷,对于大部分常用页面,应该使用最简单的方法来实现,甚至不需要学习各种框架和工具,专注核心业务,告别 996,省下的时间做自己喜欢做的事,从此不再因为繁琐的后台开发而焦头烂额。

下载最新的JAR或通过Maven获取。

详细使用步骤

后端:Java 8、 ScriptEngine、 Annotation、 JDBC、 Reflect、 Spring Boot、 JPA、 Hibernate、 Quartz、 Gson、 Lombok、 POI …

前端:JavaScript、 H5、 MVVM、 Router、 Angular CLI、 Angular、 NG-ZORRO、 NG-ALAIN、 G2Plot、 RxJS、 TypeScript、 Less …

Spring Boot 优点非常多,如:一、独立运行Spring Boot而且内嵌了各种servlet容器,Tomcat、Jetty等,现在不再需要打成war包部署到容器中,Spring Boot只要打成一个可执行的jar包就能独立运行,所有的依赖包都在一个jar包内。二、简化配置spring-boot-starter-web启动器自动依赖其他组件,简少了maven的配置。 三、自动配置Spring Boot能根据当前类路径下的类、jar包来自动配置bean,如添加一个spring-boot-starterweb启动器就能拥有web的功能,无需其他配置。四、无代码生成和XML配置Spring Boot配置过程中无代码生成,也无需XML配置文件就能完成所有配置工作,这一切都是借助于条件注解完成的,这也是Spring4.x的核心功能之一。五、应用监控Spring Boot提供一系列端点可以监控服务及应用,做健康检测。

的?启动类上面的注解是@SpringBootApplication,它也是 Spring Boot 的核心注解,主要组合包含了以下 3 个注解:@SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。@EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class})。@ComponentScan:Spring组件扫描。

1)打包用命令或者放到容器中运行2)用 Maven/Gradle 插件运行3)直接执行 main 方法运行

Starters是什么:Starters可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,你可以一站式集成Spring及其他技术,而不需要到处找示例代码和依赖包。如你想使用Spring JPA访问数据库,只要加入spring-boot-starter-data-jpa启动器依赖就能使用了。Starters包含了许多项目中需要用到的依赖,它们能快速持续的运行,都是一系列得到支持的管理传递性依赖。Starters命名:Spring Boot官方的启动器都是以spring-boot-starter-命名的,代表了一个特定的应用类型。第三方的启动器不能以spring-boot开头命名,它们都被Spring Boot官方保留。一般一个第三方的应该这样命名,像mybatis的mybatis-spring-boot-starter。Starters分类:

  1. Spring Boot应用类启动器

如果你想在Spring Boot启动的时候运行一些特定的代码,你可以实现接口ApplicationRunner或者CommandLineRunner,这两个接口实现方式一样,它们都只提供了一个run方法。CommandLineRunner:启动获取命令行参数

Spring boot actuator是spring启动框架中的重要功能之一。Spring boot监视器可帮助您访问生产环境中正在运行的应用程序的当前状态。有几个指标必须在生产环境中进行检查和监控。即使一些外部应用程序可能正在使用这些服务来向相关人员触发警报消息。监视器模块公开了一组可直接作为HTTP URL访问的REST端点来检查状态。

Spring提供了一种使用ControllerAdvice处理异常的非常有用的方法。 我们通过实现一个ControlerAdvice类,来处理控制器类抛出的所有异常。

Starters可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,你可以一站式集成Spring 及其他技术,而不需要到处找示例代码和依赖包。如你想使用 Spring JPA 访问数据库,只要加入 spring-boot-starter-data-jpa 启动器依赖就能使用了。

spring-boot-starter-web 嵌入tomcat和web开发需要servlet与jsp支持spring-boot-starter-data-jpa 数据库支持spring-boot-starter-data-redis redis数据库支持spring-boot-starter-data-solr solr支持mybatis-spring-boot-starter 第三方的mybatis集成starter

主要有两种方式:Spring LoadedSpring-boot-devtools

在 Spring Boot 里面,可以使用以下几种方式来加载配置。1)properties文件;2)YAML文件;3)系统环境变量;4)命令行参数;等等……

么?pring Boot 的核心配置文件是 application 和 bootstrap 配置文件。application 配置文件这个容易理解,主要用于 Spring Boot 项目的自动化配置。bootstrap 配置文件有以下几个应用场景。使用 Spring Cloud Config 配置中心时,这时需要在 bootstrap 配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息;一些固定的不能被覆盖的属性;一些加密/解密的场景;

对于集成 Spring Boot 和 ActiveMQ,我们使用 spring-boot-starter-activemq 依赖关系。 它只需要很少的配置,并且不需要样板代码。

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。