小白教你做网站 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 这是目前比较火的语言 一门独立的网站编程语言 有集成的开发环境 从我学的课程学时中也能看出来对它的重视!

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

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

基于SpringBoot 的CMS系统,拿去开发企业官网真香(附源码)

  • 系统100%开源
  • 模块化开发模式,铭飞所开发的模块都发布到了maven中央库。可以通过pom.xml文件的方式拉取源代码

基于MIT开源协议,可直接商用无需授权,但请尊重开源精神不要去掉代码中铭飞的注释和版权信息

  • 免费完整开源:基于MIT协议,源代码完全开源,无商业限制,MS开发团队承诺将MCMS内容系统永久完整开源;关注Java项目分享
  • 标签化建站:不需要专业的后台开发技能,只要使用系统提供的标签,就能轻松建设网站;
  • html静态化:系统支持全站静态化;
  • 跨终端:站点同时支持PC与移动端访问,同时会自动根据访问的终端切换到对应的界面,数据由系统统一管理;
  • 海量模版:铭飞通过MStore(MS商城)分享更多免费、精美的企业网站模版,降低建站成本;关注Java项目分享
  • 丰富插件:为了让MCms适应更多的业务场景,在MStore用户可以下载对应的插件,如:站群插件、微信插件、商城插件等;
  • 每月更新:铭飞团队承诺每月28日为系统升级日,分享更多好用等模版与插件;
  • 文档丰富:为了让用户更快速的使用MCms系统进行开发,铭飞团队持续更新开发相关文档,如标签文档、使用文档、视频教程等;
  • 企 业:帮助创立初期的公司或团队快速搭建产品的技术平台,加快公司项目开发进度;
  • 开发者:帮助开发者快速完成承接外包的项目,避免从零搭建系统;
  • 学习者:初学JAVA的同学可以下载源代码来进行学习交流;

建议开发者使用以下环境,这样避免版本带来的问题

  • Windows、Linux
  • Eclipse、Idea
  • Mysql≧5.7
  • JDK≧8
  • Tomcat≧8

MCms内容插件提供最基本的菜单、权限、角色、栏目、内容、静态化、等常用功能。视频教程:内容插件视频教程 配合代码生成器使用快速提升开发效率:代码生成器在线视频教程、代码生成器使用文档

项目访问路径/swagger-ui.html#/

系统部署手册

懒人做法,将所有的资源打成一个jar包,维护资源不方便,不推荐

打包指令增加参数 -f bin-xml ,执行完成会在target目录会生成 “ 项目-bin ” 发布文件夹

config:配置文件

html:静态化自动生成的目录(自动生成)

static:静态资源文件

templets:(必须)模版目录,需要复制一份

upload:(必须)上传的文件夹

WEB-INF:ftl视图文件

mcms.log:自动生成的日志文件

*.sh:linux启动、停止脚本

*.bat:window启动、停止脚本

做开源我们是业余的,写代码我们是认真的。研发产品的路上我们一直在探索、一直在学习、一直在用心投入,希望能给更多的企业与开发者提供一些更有价值的服务。

源码资料获取方式:关注小编+转发文章+私信【 666 】免费获取八股文面试资料获取方式:关注小编+转发文章+私信【 13 】免费获取重要的事情说三遍,转发+转发+转发,一定要记得点赞转发哦!!!面试官:Spring 和 Spring Boot 的区别是什么?

对于 Spring和 SpringBoot到底有什么区别,我听到了很多答案,刚开始迈入学习 SpringBoot的我当时也是一头雾水,随着经验的积累、我慢慢理解了这两个框架到底有什么区别,相信对于用了 SpringBoot很久的同学来说,还不是很理解 SpringBoot到底和 Spring有什么区别,看完文章中的比较,或许你有了不同的答案和看法!

作为 Java开发人员,大家都 Spring都不陌生,简而言之, Spring框架为开发 Java应用程序提供了全面的基础架构支持。它包含一些很好的功能,如依赖注入和开箱即用的模块,如:

SpringJDBC、SpringMVC、SpringSecurity、SpringAOP、SpringORM、SpringTest,这些模块缩短应用程序的开发时间,提高了应用开发的效率例如,在 JavaWeb开发的早期阶段,我们需要编写大量的代码来将记录插入到数据库中。但是通过使用 SpringJDBC模块的 JDBCTemplate,我们可以将操作简化为几行代码。

SpringBoot基本上是 Spring框架的扩展,它消除了设置 Spring应用程序所需的 XML配置,为更快,更高效的开发生态系统铺平了道路。

SpringBoot中的一些特征:

1、创建独立的 Spring应用。2、嵌入式 Tomcat、 Jetty、 Undertow容器(无需部署war文件)。3、提供的 starters 简化构建配置4、尽可能自动配置 spring应用。5、提供生产指标,例如指标、健壮检查和外部化配置6、完全没有代码生成和 XML配置要求

首先,让我们看一下使用Spring创建Web应用程序所需的最小依赖项

与Spring不同,Spring Boot只需要一个依赖项来启动和运行Web应用程序:

在进行构建期间,所有其他依赖项将自动添加到项目中。

另一个很好的例子就是测试库。我们通常使用 SpringTest, JUnit, Hamcrest和 Mockito库。在 Spring项目中,我们应该将所有这些库添加为依赖项。但是在 SpringBoot中,我们只需要添加 spring-boot-starter-test依赖项来自动包含这些库。

Spring Boot为不同的Spring模块提供了许多依赖项。一些最常用的是:

spring-boot-starter-data-jpaspring-boot-starter-securityspring-boot-starter-testspring-boot-starter-webspring-boot-starter-thymeleaf

有关 starter的完整列表,请查看Spring文档。

让我们来看一下 Spring和 SpringBoot创建 JSPWeb应用程序所需的配置。

Spring需要定义调度程序 servlet,映射和其他支持配置。我们可以使用 web.xml 文件或 Initializer类来完成此操作:

还需要将 @EnableWebMvc注释添加到 @Configuration类,并定义一个视图解析器来解析从控制器返回的视图:

再来看 SpringBoot一旦我们添加了 Web启动程序, SpringBoot只需要在 application配置文件中配置几个属性来完成如上操作:

上面的所有Spring配置都是通过一个名为auto-configuration的过程添加 Bootweb starter来自动包含的。

这意味着 SpringBoot将查看应用程序中存在的依赖项,属性和 bean,并根据这些依赖项,对属性和 bean进行配置。当然,如果我们想要添加自己的自定义配置,那么 SpringBoot自动配置将会退回。

现在我们来看下如何在Spring和Spring Boot中配置Thymeleaf模板引擎。

在 Spring中,我们需要为视图解析器添加 thymeleaf-spring5依赖项和一些配置:

SpringBoot1X只需要 spring-boot-starter-thymeleaf的依赖项来启用 Web应用程序中的 Thymeleaf支持。   但是由于 Thymeleaf3.0中的新功能,我们必须将 thymeleaf-layout-dialect 添加为 SpringBoot2XWeb应用程序中的依赖项。配置好依赖,我们就可以将模板添加到 src/main/resources/templates文件夹中, SpringBoot将自动显示它们。

为简单起见,我们使用框架默认的 HTTPBasic身份验证。让我们首先看一下使用 Spring启用 Security所需的依赖关系和配置。

Spring首先需要依赖 spring-security-web和 spring-security-config 模块。接下来, 我们需要添加一个扩展 WebSecurityConfigurerAdapter的类,并使用 @EnableWebSecurity注解:

这里我们使用 inMemoryAuthentication来设置身份验证。同样, SpringBoot也需要这些依赖项才能使其工作。但是我们只需要定义 spring-boot-starter-security的依赖关系,因为这会自动将所有相关的依赖项添加到类路径中。

SpringBoot中的安全配置与上面的相同

Spring和 SpringBoot中应用程序引导的基本区别在于 servlet。Spring使用 web.xml 或 SpringServletContainerInitializer作为其引导入口点。SpringBoot仅使用 Servlet3功能来引导应用程序,下面让我们详细来了解下

Spring支持传统的 web.xml引导方式以及最新的 Servlet3+方法。

配置 web.xml方法启动的步骤

Servlet容器(服务器)读取 web.xml

web.xml中定义的 DispatcherServlet由容器实例化

DispatcherServlet通过读取 WEB-INF/{servletName}-servlet.xml来创建 WebApplicationContext。最后, DispatcherServlet注册在应用程序上下文中定义的 bean

使用 Servlet3+方法的 Spring启动步骤

容器搜索实现 ServletContainerInitializer的类并执行 SpringServletContainerInitializer找到实现所有类 WebApplicationInitializer“WebApplicationInitializer创建具有XML或上下文 @Configuration类 WebApplicationInitializer创建 DispatcherServlet与先前创建的上下文。

Spring Boot应用程序的入口点是使用@SpringBootApplication注释的类

默认情况下, SpringBoot使用嵌入式容器来运行应用程序。在这种情况下, SpringBoot使用 publicstaticvoidmain入口点来启动嵌入式 Web服务器。此外,它还负责将 Servlet, Filter和 ServletContextInitializerbean从应用程序上下文绑定到嵌入式 servlet容器。SpringBoot的另一个特性是它会自动扫描同一个包中的所有类或 Main类的子包中的组件。

SpringBoot提供了将其部署到外部容器的方式。我们只需要扩展 SpringBootServletInitializer即可:

这里外部 servlet容器查找在war包下的 META-INF文件夹下MANIFEST.MF文件中定义的 Main-class, SpringBootServletInitializer将负责绑定 Servlet, Filter和 ServletContextInitializer。

最后,让我们看看如何打包和部署应用程序。这两个框架都支持 Maven和 Gradle等通用包管理技术。但是在部署方面,这些框架差异很大。例如,Spring Boot Maven插件在 Maven中提供 SpringBoot支持。它还允许打包可执行 jar或 war包并 就地运行应用程序。

在部署环境中 SpringBoot 对比 Spring的一些优点包括:

1、提供嵌入式容器支持2、使用命令java -jar独立运行jar3、在外部容器中部署时,可以选择排除依赖关系以避免潜在的jar冲突4、部署时灵活指定配置文件的选项5、用于集成测试的随机端口生成

简而言之,我们可以说 SpringBoot只是 Spring本身的扩展,使开发,测试和部署更加方便。

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

点赞 0
收藏 0

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