JSP生成静态页面

合集下载

前端开发中的静态网页生成器推荐

前端开发中的静态网页生成器推荐

前端开发中的静态网页生成器推荐随着互联网的飞速发展,前端开发领域成为了一个备受瞩目的行业。

越来越多的人开始关注和学习前端开发,其中一个重要的技术就是静态网页生成器。

静态网页生成器是一种将动态内容生成为静态网页的工具,可以提高网站的性能和安全性。

在本文中,我将介绍几款备受推崇的静态网页生成器,希望能够帮助读者选择适合自己的工具。

一、HugoHugo是一款非常受欢迎的静态网页生成器,由Go语言开发。

它的特点是速度快、灵活性高,支持多种主题和插件。

Hugo使用Markdown语法来编写内容,可以方便地生成静态网页,并且支持自动化部署到各种托管平台。

无论是个人博客、企业网站还是技术文档,Hugo都是一个不错的选择。

二、JekyllJekyll是一个简单易用的静态网页生成器,使用Ruby语言开发。

它的设计目标是用最少的配置和模板文件来生成高效的静态网页。

Jekyll支持多种主题和插件,可以根据个人需求进行自由扩展。

许多知名的技术博客和开源项目都使用Jekyll来构建静态网站,例如GitHub Pages。

三、HexoHexo是一款快速、简洁的静态网页生成器,使用Node.js开发。

它支持多种主题和插件,可以方便地生成优雅的静态网页。

Hexo具有很高的扩展性和定制性,可以根据个人需求进行灵活配置和功能扩展。

许多前端开发者和写手都选择了Hexo来建立自己的个人博客。

四、GatsbyGatsby是一个基于React的现代化静态网站生成器,被广泛用于构建高性能的网站和应用。

Gatsby使用GraphQL来查询数据,可以方便地将各种数据源整合在一起。

它支持PWA(Progressive Web App)和静态文件的预加载,提供了优秀的用户体验。

Gatsby还有大量的插件和主题可供选择,可以根据个人需求来进行定制。

以上是几款备受推荐的静态网页生成器,每一款都有各自的特点和优势。

在选择的时候,可以根据自己的技术栈和需求来进行权衡。

jsp的功能

jsp的功能

jsp的功能JSP(JavaServer Pages)是一种用来开发动态Web页面的Java技术。

它可以将Java代码嵌入到HTML文档中,以实现更丰富的页面交互和动态数据展示功能。

以下是JSP的一些常见功能。

1. 动态页面生成:JSP可以根据用户请求,动态生成HTML页面,并将页面内容返回给浏览器。

这使得网页内容可以根据不同的条件和参数进行自适应的展示。

开发者可以在JSP中使用Java代码来处理用户请求,调用数据库、调用其他Java对象等。

2. 数据库访问:JSP可以直接连接数据库,并执行数据库操作。

通过使用Java的数据库连接API,JSP可以从数据库中查询、添加、修改和删除数据,然后将结果展示在Web页面上。

这可以实现数据的持久化和动态更新。

3. 表单处理:JSP可以处理用户提交的表单数据。

通过在JSP页面中定义HTML表单元素,并在表单的提交动作中指定JSP的URL,JSP可以接收表单数据,并对数据进行验证、处理和存储。

这些可以用来实现用户注册、登录、数据录入等功能。

4. 条件判断和循环:JSP支持使用Java的条件语句和循环语句。

这使得可以在JSP页面中根据不同的条件展示不同的内容,或者重复展示一段代码块。

通过使用if语句、switch语句和for循环等,可以实现更复杂的页面逻辑。

5. 页面重定向和转发:JSP可以将请求重定向到其他页面,或者将请求转发到另一个JSP或Servlet。

这使得可以在不同的页面之间进行跳转和协作,实现业务流程的分步处理。

6. 用户认证和会话管理:JSP提供了与用户认证和会话管理相关的内置对象。

通过这些对象,可以实现用户登录、注销、用户角色权限控制等功能。

同时,JSP还支持在页面级别和应用程序级别上进行会话管理。

7. 页面模板和复用:JSP支持使用页面模板和标签库进行页面复用。

可以将多个JSP页面中的公共部分抽取出来,形成一个模板文件,然后在其他JSP页面中引用该模板文件。

JSP中的静态包含和动态包含的区别

JSP中的静态包含和动态包含的区别

JSP中的静态包含和动态包含的区别<%-- 静态包含 --%><%@ include file="..." %><%-- 动态包含 --%><jsp:include page="..."><jsp:param name="..." value="..." /></jsp:include>区别: 1.最终编译成的java⽂件的数量不同 静态包含转换成java⽂件时,将包含⽂件的内容“复制”到主题⽂件中,然后作为⼀个整体编译,最终编译为⼀个class⽂件,⽽动态包含是各个jsp⽂件分别转换,分别编译,最终编译成多个class⽂件 2.执⾏时间不同 静态包含是编译时包含 -JSP---->java⽂件阶段。

如果包含的页⾯不存在则会产⽣编译错误,⽽且两个页⾯的"contentType"属性应保持⼀致,不能有相同的变量名 因为两个页⾯会合⼆为⼀,只产⽣⼀个class⽂件,因此被包含页⾯发⽣的变化再包含它的页⾯更新前不会得到更新,需要重新编译更新。

⽽动态包含是运⾏时包含 -执⾏class⽂件阶段,可以向被包含的页⾯传递参数,包含页⾯和被包含页⾯是独⽴的,会编译出多个class⽂件, 如果被包含的页⾯不存在,不会产⽣编译错误,也不影响页⾯其他部分的执⾏ 3.⽆论是动态包含还是静态包含,其request对象都是相同的。

静态包含最终编译成⼀个java⽂件,有⼀个request对象。

⽽动态包含最终编译成多个java⽂件,其实这些jsp组合的过程,是⼀个请求转发的过程,⾃然也使⽤同⼀个request对象了。

(完整版)JSP登陆页面代码

(完整版)JSP登陆页面代码
response.sendRedirect("login.htm");
}
%>
如果输入信息有误,则回到登录页面,重新输入登录信息。
注册页面:reg.jsp
请输入您的注册信息:
<table>
<form action="/user/Reg" method="post" name="regform" onsubmit="return regconfirm();">
session.setAttribute("login","ok");
session.setMaxInactiveInterval(-1);
%>
<jsp:forward page="main.jsp"/>
<%
}else{
out.println("用户名或密码输入错误!");
}
%>
如果登录成功,则设定login的值为ok,提交到下一步验证页面,则进入main.jsp页面,否则,如果输入的用户名和密码不合法就打印错误信息,main.jsp页面代码如下:
<tr><td>密码:</td><td><input type="password" name="user_pwd" id="user_pwd" size="20" maxlength=10 onBlur="checkPWD();">*可以包含字母数字(区分大小写),6-10位</td>

jsp的运行原理

jsp的运行原理

jsp的运行原理
JSP(Java Server Pages)是一种用于动态生成网页的技术,其运行原理如下:
1. 客户端(浏览器)发送一个HTTP请求到服务器,请求访问一个JSP页面。

2. 服务器接收到请求后,通过Web容器(如Tomcat)将JSP 页面转化为一个Servlet。

3. Servlet容器编译并加载Servlet,并创建一个Servlet实例。

4. Servlet实例执行JSP页面的代码,生成动态内容。

5. 生成的动态内容被发送回服务器。

6. 服务器将生成的动态内容作为HTTP响应发送回客户端。

7. 客户端接收到HTTP响应并将其显示在浏览器中。

在JSP运行过程中,以下是一些关键点:
- JSP页面中的Java代码会被编译并转化为相应的Servlet类。

这个过程只发生一次,即在第一次请求JSP页面时发生。

之后的请求会直接使用已编译的Servlet类。

- JSP页面中的HTML、JavaScript等静态内容会直接返回给客户端,而不需要进行编译。

- JSP页面中的动态内容是通过嵌入的Java代码和JSP标签来实现的,这些代码会在运行时被执行。

- Servlet容器负责管理和执行Servlet的生命周期,并处理与客户端的通信。

- JSP支持标签库(Taglib)的使用,可以方便地封装和重用一些常见的功能。

总之,JSP通过将Java代码嵌入在HTML页面中,使得开发人员可以方便地生成动态内容,并以网页形式呈现给用户。

Freemarker生成HTML静态页面

Freemarker生成HTML静态页面

Freemarker⽣成HTML静态页⾯这段时间的⼯作是做⼀个⽹址导航的项⽬,⾯向⽤户的就是⼀个⾸页,于是就想到了使⽤freemarker这个模板引擎来对⾸页静态化。

之前是⽤jsp实现,为了避免⽤户每次打开页⾯都查询⼀次数据库,所以使⽤了jsp的内置对象application,在Controller中将数据都查询出来,然后放⼊application,最后在JSP页⾯使⽤jstl标签配合EL表达式将数据遍历出来。

这样做是从⼀定程度上减轻了服务器的压⼒和页⾯的响应速度,但是仍然没有静态页⾯响应快。

使⽤Freemarker步骤:1. jar包,我的项⽬中使⽤maven来构建,所以在pom.xml中引⼊Freemarker jar包的坐标就可以了。

2. ftl模板,我在WEB-INF下⾯创建⼀个⽂件夹ftl,⾥⾯只放ftl模板⽂件,我创建了⼀个index.ftl⽂件。

3. ftl模板⽂件中写的就是html标签和css样式之类的,但是数据部分需要使⽤Freemarker提供的标签遍历出来。

如下<!--⼴告悬浮--><div class="subMenu"><!--⼯具--><div class='xff'><div class="slideTxtBox"><div class="hd"><span class="arrow"><a class="next"></a><a class="prev"></a></span><ul><#list newsMap?keys as testKey><li>${testKey}</li></#list></ul></div><div class="bd" style="padding: 5px 10px;"><#list newsMap?values as value><div style="text-align: left; table-layout: fixed; word-wrap: break-word; width: 100%;" class="baidu"><#list value as newsList><a target="_blank" href="${newsList.newsurl }" title="${newsList.newsname }">${newsList.newsname }</a></#list></div></#list></div></div></div></div>其中<#list></#list>是Freemarker提供的遍历标签,Freemarker提供了很多的标签,这⾥不⼀⼀叙述。

静态页面和动态页面的区别

静态页面和动态页面的区别

静态页⾯和动态页⾯的区别⼀、静态web页⾯:1、在静态Web程序中,客户端使⽤Web浏览器(IE、FireFox等)经过⽹络(Network)连接到服务器上,使⽤HTTP协议发起⼀个请求(Request),告诉服务器我现在需要得到哪个页⾯,所有的请求交给Web服务器,之后WEB服务器根据⽤户的需要,从⽂件系统(存放了所有静态页⾯的磁盘)取出内容。

之后通过Web服务器返回给客户端,客户端接收到内容之后经过浏览器渲染解析,得到显⽰的效果。

2、为了让静态web页⾯显⽰更加好看,使⽤javascript/VBScript/ajax(AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指⼀种创建交互式⽹页应⽤的⽹页开发技术。

)但是这些特效都是在客户端上借助于浏览器展现给⽤户的,所以在服务器上本⾝并没有任何的变化。

3、静态web⽆法连接数据库;4、静态web资源开发技术:HTML;5、由于现在的web页⾯中,⼤量使⽤JS,导致浏览器打开页⾯,就会占⽤⼤量的内存,服务端的压⼒是减轻了,但压⼒转移到了客户端。

⼆、动态web页⾯:动态WEB中,程序依然使⽤客户端和服务端,客户端依然使⽤浏览器(IE、FireFox等),通过⽹络(Network)连接到服务器上,使⽤HTTP 协议发起请求(Request),现在的所有请求都先经过⼀个WEB Server来处理。

如果客户端请求的是静态资源(*.htm或者是*.htm),则将请求直接转交给WEB服务器,之后WEB服务器从⽂件系统中取出内容,发送回客户端浏览器进⾏解析执⾏。

如果客户端请求的是动态资源(*.jsp、*.asp/*.aspx、*.php),则先将请求转交给WEB Container(WEB容器),在WEB Container中连接数据库,从数据库中取出数据等⼀系列操作后动态拼凑页⾯的展⽰内容,拼凑页⾯的展⽰内容后,把所有的展⽰内容交给WEB服务器,之后通过WEB服务器将内容发送回客户端浏览器进⾏解析执⾏。

jspinclude用法

jspinclude用法

jspinclude用法JSP(Java Server Pages)是一种用于构建动态网页的技术,它允许将Java代码嵌入到HTML页面中。

在大型的JSP项目中,经常会遇到多个JSP页面之间需要共享一些通用的代码或功能的情况。

为了实现代码的重用和模块化,JSP提供了include指令来引入其他JSP页面的内容。

include指令用于将一个JSP页面的内容嵌入到另一个JSP页面中。

在JSP中,可以使用两种方式来进行include操作:静态包含(static include)和动态包含(dynamic include)。

1. 静态包含(static include):静态包含是在编译时完成的,使用静态包含时,被引入的页面的内容会包含在包含页面中,一起编译和执行。

可以通过以下方式使用静态包含:```jsp```静态包含的特点是:在编译时,被包含的页面的内容会被复制到包含页面中,在运行时,包含页面和被包含页面是一个整体,共享相同的上下文信息。

静态包含适用于包含一些静态的、不需要动态生成的内容。

在包含页面的任何地方使用include指令,被包含的页面都会在该位置展示。

2. 动态包含(dynamic include):动态包含是在运行时完成的,使用动态包含时,可以在运行时根据条件来决定是否包含一些页面。

可以通过以下方式使用动态包含:```jsp<jsp:include page="included.jsp"></jsp:include>```动态包含的特点是:在运行时,根据条件将被包含的页面插入到包含页面中。

动态包含可以在包含页面中的任意位置使用,可以在循环中动态判断是否需要包含一些页面。

动态包含适用于根据运行时条件来包含不同的内容。

总结:。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

jsp生成静态页面转自:/space/?233生成静态页面技术解决方案系列(一)2006-10-26相信很多人都希望自己的页面越快越好,最好是能静态的,提高客户访问速度。

也便于搜索引擎搜索。

所以,就希望我们的动态读取数据库的页面,尽可能的生成静态页面。

一下系列文章,介绍一下个人的解决方案。

本系列将介绍个人的一种方法,在不改变原来jsp 文件的基础上,只需要加入少量的代码,就让你的新闻发布系统,很容易就完全变成静态的页面。

本文假设你是用java开发的web动态页面。

第一步,加入servlet.代码如下。

public class ToHtml extends HttpServlet {public void service(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String url = "";String name = "";ServletContext sc = getServletContext();String file_name = request.getParameter("file_name");// 你要访问的jsp 文件名,如index,不包括扩展名// 则你访问这个servlet时加参数.如http://localhost/test/toHtml?file_name=indexurl = "/" + file_name + ".jsf";// 你要生成的页面的文件名。

我的扩展名为jsf .name = ConfConstants.CONTEXT_PATH+"\\"+ file_name + ".htm";// 这是生成的html文件名,如index.htm.文件名字与源文件名相同。

扩展名为htm//ConfConstants.CONTEXT_PATH为你的应用的上下文路径。

RequestDispatcher rd = sc.getRequestDispatcher(url);final ByteArrayOutputStream ōs = new ByteArrayOutputStream();final ServletOutputStream stream = new ServletOutputStream() { public void write(byte[] data, int offset, int length) {os.write(data, offset, length);}public void write(int b) throws IOException {os.write(b);}};final PrintWriter pw = new PrintWriter(newOutputStreamWriter(os));HttpServletResponse rep = newHttpServletResponseWrapper(response) {public ServletOutputStream getOutputStream() {return stream;}public PrintWriter getWriter() {return pw;}};rd.include(request, rep);pw.flush();FileOutputStream fos = new FileOutputStream(name); // 把jsp 输出的内容写到xxx.htmos.writeTo(fos);fos.close();PrintWriter ōut = response.getWriter();out.print("<p align=center><font size=3 color=red>页面已经成功生成!single<br>/space/? 233</font></p>");}}第二步、配置你的web.xml<servlet><servlet-name>toHtml</servlet-name><servlet-class>mj.util.html.ToHtml</servlet-class>//你的servlet的类。

</servlet><servlet-mapping><servlet-name>toHtml</servlet-name><url-pattern>/toHtml</url-pattern></servlet-mapping>第三步、运行servlet。

如:http://localhost:8080/test/toHtml?file_name=indexOK,这就在你的test项目的根目录下,生成了一个index.htm的静态文件。

局限性:本文只能生成一个文件!访问一次,生成一个文件。

并且生成的文件名也与原来的文件名相同。

比较适合主页生成静态页面。

本系列的后续文章将解决更多的问题。

使之在新闻发布系统中,很容易就集成应用。

*生成静态页面技术解决方案系列(二)2006-10-28注意:转贴本文,请加上本文链接/space/?233/action_viewspace_itemid_21.html在上一篇文章中,生成静态页面,是有一定的局限性的。

生成主页是很方便,但要生成二级页面,就不方便了。

本文假设一个新闻发布系统。

希望后台发布的,前台显示的是静态的文档。

这就涉及,主页要是静态的,同时二级列表也是静态的,新闻内容也是静态的。

也就是说,在发布一篇新闻的时候,可能涉及到三个地方生成静态文档。

并且,要生成一个网页,必须访问一个servlet。

在大量生成静态网页的时候,以下方法,可以解决这些问题。

一、加入一下servelet/*** @file_name 文件名及文件之后的参数.最好为a.jsf?fileId=aaaa* @path 文件所在的路径.相对于根目录而言的.* @realName文件要保存的名字* @realPath文件要保存的真实路径。

默认与文件所在的目录相同。

*/public class ToHtmlPath extends HttpServlet {public void service(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String url = "";String name = "";ServletContext sc = getServletContext();String file_name = request.getParameter("file_name");// 你要访问的jsp 文件,如news.jsf。

// file_name如:fileDetail.jsf?fileId=56.要是有参数,只有一个参数。

并且以参数名作为文件名。

String realName = request.getParameter("realName");// 要保存的文件名。

如aaa;注意可以没有这个参数。

String path = request.getParameter("path");// 你要访问的jsp 文件路径。

如news。

注意可以没有这个参数。

String realPath = request.getParameter("realPath");// 你要保存的文件路径,如htmlNews.注意可以没有这个参数。

// 下面确定要保存的文件名字。

if (realName == null || realName == "") {int a = 0;a = file_name.indexOf("=") + 1;realName = file_name.substring(a);if (realName.indexOf(".")>0) {realName = file_name.substring(0,file_name.indexOf("."));}}// 下面构造要访问的页面。

if (path == null || path == "") {url = "/" + file_name;// 这是你要生成HTML的jsp 文件,如} else {url = "/" + path + "/" + file_name;// 这是你要生成HTML的jsp 文件,如}// 下面构造要保存的文件名,及路径。

// 1、如果有realPath,则保存在realPath下。

// 2、如果有path则保存在path下。

// 3、否则,保存在根目录下。

if (realPath == null || realPath == "") {if (path == null || path == "") {name = ConfConstants.CONTEXT_PATH + "\\" + realName + ".htm";// 这是生成的html文件名,如index.htm.说明:ConfConstants.CONTEXT_PATH为你的上下文路径。

} else {name = ConfConstants.CONTEXT_PATH + "\\" + path + "\\" + realName + ".htm";// 这是生成的html文件名,如index.htm.}} else {name = ConfConstants.CONTEXT_PATH + "\\" + realPath + "\\" + realName + ".htm";// 这是生成的html文件名,如index.htm.}// 访问请求的页面,并生成指定的文件。

相关文档
最新文档