『壹』 jsp是什么
JSP是一种动态网页技术标准,这种技术可以根据客户端的请求,生成动态或者静态网页,然后发送给客户端的请求者。
不少的朋友经常会在电脑科普网站上看到jsp这个概念,究竟这个jsp是什么意思?jsp又有什么作用和特点呢?下面让我们一起去了解吧。
JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。JSP技术以java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。
JSP将Java代码和特定变动内容嵌入到静态的页面中,实现以静态页面为模板,动态生成其中的部分内容。JSP引入了被称为“JSP动作”的XML标签,用来调用内建功能。另外,可以创建JSP标签库,然后像使用标准HTML或XML标签一样使用它们。
标签库能增强功能和服务器性能,而且不受跨平台问题的限制。JSP文件在运行时会被其编译器转换成更原始的Servlet代码。JSP编译器可以把JSP文件编译成用Java代码写的Servlet,然后再由Java编译器来编译成能快速执行的二进制机器码,也可以直接编译成二进制码。
用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面,并使用JSP标识或者小脚本来生成页面上的动态内容。生成内容的逻辑被封装在标识和JavaBeans组件中,并且捆绑在脚本中,所有的脚本在服务器端运行。由于核心逻辑被封装在标识和JavaBeans中,所以Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的生成。
在服务器端,JSP引擎解释JSP标识和脚本,生成所请求的内容(例如,通过访问JavaBeans组件,使用JDBC技术访问数据库或者包含文件),并且将结果以HTML(或者XML)页面的形式发送回浏览器。这既有助于作者保护自己的代码,又能保证任何基于HTML的Web浏览器的完全可用性。
『贰』 java静态资源(静态方法,静态属性)是程序一运行就加载到jvm中,还是当被调用的时候才进行加载呢
java静态资源(静态方法,静态属性)是程序一运行就加载到jvm中的。
1、类中的静态属性会被加入到类对象(也可以叫做类的模板,是类的描述) 的构造器中,静态方法也会被加入到类对象中。
2、当第一次使用类时,JVM会通过类加载器,加载类对象,从而初始化静态属性,并装入类的方法,包括静态方法和实例方法(方法不会被调用,只是加载,从这个意义上来说,静态方法和实例方法是类似的)。
3、当创建类的实例对象时,JVM会调用类的构造器,从而初始化类的属性。
(2)javajsp生成静态文件扩展阅读:
JVM 类加载机制
JVM类加载机制分为五个部分:加载,验证,准备,解析,初始化,下面我们就分别来看一下这五个过程。
1、加载
加载是类加载过程中的一个阶段,这个阶段会在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的入口。注意这里不一定非得要从一个Class文件获取,这里既可以从ZIP包中读取(比如从jar包和war包中读取),也可以在运行时计算生成(动态代理),也可以由其它文件生成(比如将JSP文件转换成对应的Class类)。
2、验证
这一阶段的主要目的是为了确保Class文件的字节流中包含的信息是否符合当前虚拟机的要求,并且不会危害虚拟机自身的安全。
3、准备
准备阶段是正式为类变量分配内存并设置类变量的初始值阶段,即在方法区中分配这些变量所使用的内存空间。
4、解析
解析阶段是指虚拟机将常量池中的符号引用替换为直接引用的过程。符号引用就是class文件中的:
CONSTANT_Class_info
CONSTANT_Field_info
CONSTANT_Method_info
等类型的常量。
5、初始化
初始化阶段是类加载最后一个阶段,前面的类加载阶段之后,除了在加载阶段可以自定义类加载器以外,其它操作都由JVM主导。到了初始阶段,才开始真正执行类中定义的Java程序代码。初始化阶段是执行类构造器<client>方法的过程。
『叁』 高分求jsp转html问题和jsp转do问题
若是HTML,一种方法是伪静态,一种方法是直接生成静态页面。
若是do,一种是URL重写(和上面伪静态方法一样),把xxx.do重定向为xxx.jsp
另一种方法是直接批量JSP文件为.do文件,然后在服务器配置里设置.do格式的用JSP格式解析。
『肆』 如何将jsp页面转换成静态页面
将jsp页面转换成静态页面的步骤:
1、在jsp页面中加入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=index
url = "/" + 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(new OutputStreamWriter(os));
HttpServletResponse rep = new HttpServletResponseWrapper(response) {
public ServletOutputStream getOutputStream() {
return stream;
}
public PrintWriter getWriter() {
return pw;
}
};
rd.include(request, rep);
pw.flush();
FileOutputStream fos = new FileOutputStream(name); // 把jsp输出的内容写到xxx.htm
os.writeTo(fos);
fos.close();
PrintWriter ōut = response.getWriter();
out
.print("<p align=center><font size=3 color=red>页面已经成功生成!single<br>http://www.agilejava.org/space/? 233</font></p>");
}
}
2、配置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>
3、运行servlet。如:http://localhost:8080/test/toHtml?file_name=index
在test项目的根目录下,生成了一个index.htm的静态文件。
『伍』 jsp页面转换成HTML
你可以新建一个jsp页面,将html中<html></html>标签中的内容替换jsp页面中
<html></html>内容即可。但注意jsp页面中的第内一行:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%> 改为:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
这行意容思是你用到了包和页面中显示的是中文。
『陆』 JSP如何生成静态的html页面
public class HTMLMaker {
final static Object lock = new Object();
public static void makeHtml(String page, String filePath){
makeHtml(page,filePath,"UTF-8");
}
public static void makeHtml(String page, String filePath,String chartset) {
synchronized (lock) {
HttpURLConnection huc = null;
BufferedReader br = null;
BufferedWriter bw = null;
try {
huc = (HttpURLConnection)new URL(page).openConnection();
System.setProperty("sun.net.client.defaultConnectTimeout", "30000");
System.setProperty("sun.net.client.defaultReadTimeout", "30000");
huc.connect();
InputStream stream = huc.getInputStream();
bw = new BufferedWriter(new OutputStreamWriter (new FileOutputStream(filePath),chartset));
br = new BufferedReader(new InputStreamReader(stream, chartset));
String line;
while((line = br.readLine())!= null){
if(line.trim().length() > 0){
bw.write(line);
bw.newLine();
}
}
}catch (Exception e) {
e.printStackTrace();
}finally {
try {
br.close();
bw.close();
huc.disconnect();
}catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
参数解释:
page:jsp页面的网络地址,比如http://localhost:8080/xxx/index.jsp
filePath:生成的html文件的保存路径
chartset:编码,不填默认utf-8。
思想:
把jsp文件开流读入,再用输出流写入到目标文件。
『柒』 关于Javaweb的问题,Jsp和Servlet各自的应用场景
JSP(JavaServer Pages)和Servlet是两种用于开发Web应用程序的服务器端技术。
JSP是一种动态Web页面技术,它使用Java代码来生成HTML、XML或其他类型的文档。JSP页面包含特殊的JSP标记,这些标记被解析并转换为Java代码,然后执行。JSP通常被用来创建动态的Web页面,例如显示数据库内容或处理表单数据。
Servlet是一种Java类,它运行在Web服务器上,并处理来自浏览器的请求。Servlet可以生成动态的HTML内容,也可以执行其他类型的任务,例如处理表单数据或连接数据库。
JSP和Servlet有许多相似之处,但各自有不同的应用场景。JSP更适合用于生成静态的Web内容,例如HTML、XML或其他文档。Servlet更适合用于执行动态的任务,例如处理表单数据或连接数据库。
总的来说,JSP通常被视为更为高级的技术,因为它可以在Web页面中嵌入Java代码,但是Servlet可以提供更多的灵活性和控制。因此,在选择使用JSP或Servlet时,应该根据自己的需求和应用场景来决定。