安装IDEA开发版
安装JDK并配置环境变量
安装Tomcat
IDEA创建WEB项目并进行相关配置
运行服务器测试demo项目
如图
IDEA创建web项目的目录结构
<%@ page import="java.util.Date" %> <%@ page import="java.util.SimpleTimeZone" %> <%@ page import="java.text.SimpleDateFormat" %> <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <!DOCTYPE html> <html> <head> <title>JSP - Hello World</title> </head> <body> <% Date date = new Date(); SimpleDateFormat dt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String today = dt.format(date); %> <h1><%= today %> </h1> <br/> <a href="hello-servlet">Hello Servlet</a> </body> </html>
package com.example.web_test; import java.io.*; import javax.servlet.http.*; import javax.servlet.annotation.*; @WebServlet(name = "helloServlet", value = "/hello-servlet") public class HelloServlet extends HttpServlet { private String message; public void init() { message = "Hello World!"; } public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { response.setContentType("text/html"); // Hello PrintWriter out = response.getWriter(); out.println("<html><body>"); out.println("<h1>" + message + "</h1>"); out.println("</body></html>"); } public void destroy() { } }
JSP指令标识如下
<%@ 指令名 属性1="属性值 1" 属性2="属性值 2".....%>
指令名包含page、include、taglib三条指令
属性用逗号或空格分隔
例如
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
定义整个JSP页面的相关属性,这些属性在JSP被服务器解析成Servlet时会转换成相应的JAVA程序代码。
1.language属性
2.extends属性
用于设置JSP页面继承的JAVA类
3.import属性
4.pageEccoding属性
定义整个JSP页面的编码格式,如果为ISO-8859-1,整个JSP页面不支持中文.
5.contentType属性
设置JSP页面的MIME类型和字符编码,如
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
6.session属性
是否使用HTTP的session会话对象,属性值为布尔型.默认true.
7.buffer属性
设置JSP的out输出对象使用的缓冲区大小,默认为8KB,建议为8的倍数,只能为KB
8.autoFlush属性
用于设置JSP页面缓存满时,是否自动刷新缓存,默认为true
9.isErrorPage属性
可以将当前JSP页面设置成错误处理页面来处理另一个JSP页面的错误,也就是异常处理
10.errorPage属性
用于指定处理当前JSP页面异常错误的另一个JSP页面,指定的JSP错误处理页面必须设置isErrorPage属性为true.errorPage属性值为一个url字符串
可以包含另一个JSP页面,静态包含,被包含文件中所有内容会被原样包含到该JSP页面中,被包含和包含的文件不可以有相同名称的变量.使用其可以大大提高代码的重用性,也便于以后维护和升级.如
<%@ include file="path"%>
在JSP中,可以通过taglib指令标识声明该页面中所使用的标签库,同时引用标签库,并指定标签的前缀。格式为:
<% taglib prefix="tagPrefix" uri="tagURI"%>
prefix:用于指定标签前缀,不能命名为jsp、jspx、java、javax、sun、servlet、sunw
uri:用于指定标签库文件的存放位置
包括JSP表达式、声明标识和脚本程序
格式为:
<%= 表达式%>
%与=之间不允许有空格
声明标识用于在JSP页面中定义全局的变量或方法。格式为
<%! 声明的变量或者方法 %>
所谓的代码片段就是JSP页面中嵌入的Java代码或者脚本代码。代码片段在页面请求的处理期间被执行,通过Java代码可以定义变量或流程控制语句等;通过脚本代码可以应用JSP的内置对象在页面输出内容、处理请求和响应、访问Session会话等。格式为
<% Java代码或是脚本代码 %>
//
/* */
/** */
<%-- 注释内容 --%>
在浏览器中看不到,查看HTML源代码时也看不到
JSP的动作标识用于向当前页面包含其它动态或静态文件。格式为
<jsp:include page="url" flush="false|true" /> 或 <jsp:include page="url" flush="false|true" /> 子动作标识<jsp:param> </jsp:include>
flush用于设置是否刷新缓冲区,默认为false.
子动作标识用于向被包含的动态页面中传递参数
通过请求转发标识可以将请求转发到其它的Web资源。例如,另一个JSP页面、HTML页面、Servlet等。执行请求转发后,当前页面不再被执行,而是去执行该标识指定的目标页面。格式为
<jsp:forward page="url"/>
JSP的传递参数标识可以作为其它标识的子标识,用于为其它标识传递参数。格式为
<jsp:param name="参数名" value="参数值" />
例:
<jsp:forward page="modify.jsp"> <jsp:param name="userId" value="7"/> </jsp:forward>
在上面的代码中,实现了在请求转发到modify.jsp页面的同时,传递了参数userId,其参数值为7.它的功能与在文件名后面直接加"?参数名=参数值"效果是相同的
request对象用于处理HTTP请求中的各项参数。在这些参数中,最常用的就是获取访问请求参数。例
<a href="delete/jsp?id=1">删除</a>
<% request.getParameter("id"); %>
在进行请求转发时,需要将一些数据传递到转发后的页面进行处理。使用request对象的setAttribute()方法的格式为
request.setAttribute(String name,Object object);
name:表示变量名,在转发后的页面,通过这个变量名获取数据。
object:用于指定需要在request范围内传递的数据,为object类型。
在将数据保存到request范围内的变量中后,可以通过request对象的getAttribute()方法获取到该变量的值,具体的语法格式如下:
request.getAttribute(String name);
cookie是小段的文本信息,通过cookie可以标识用户身份,记录用户名和密码,跟踪重复用户等。
cookie的getCookies()方法可获取到所有cookie对象的集合;cookie对象的getName()方法可以获取到指定名称的cookie;通过getValue()方法可获取到cookie对象的值;将一个cookie对象发送到客户端,使用response对象的addCookie()方法
所有的request请求都是ISO-8859-1的。页面使用的是UTF-8,将获取到的数据使用指定编码类型重新构造一个String对象。如
<a href="show.jsp"?name="张三"&sex="男">解决中文乱码</a>
<%= new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8") %> <%= request.getParameter("sex") %> //将转换和不转换进行对比
request中的getLocale()和getLocales()方法允许开发人员获取使用的本地语言。java.util.Local封装了一个国家和国家所使用的一种语言。如
<% java.util.Locale locale = request.getLocale(); String str = ""; if(locale.equals(java.util.Locale.US)){ str = "Hello,welcome to access our web!"; } if(locale.equals(java.util.Locale.CHINA)){ str = "您好,欢迎访问我们的网站!"; } %> <%@= str %>
使用sendRedirect()方法可以将网页重定向到另一个,与转发不同,它支持将地址重定向到不同的主机。重定向后,request中的属性全部失效,并且重新开始一个新的request对象。格式为
response.sendRedirect(String path);
path:可以为相对路径,也可以是不同主机的其它URL地址
通过response对象可以设置HTTP响应报头,最常用的为禁用缓存、设置页面自动刷新和定时跳转页面。
默认下,浏览器会对网页进行缓存,在用户再次访问,会判断网页是否有变化,没有变化直接显示缓存中的内容,这样可以提高网页的显示速度。但对一些安全性要求较高的浏览器,需要禁用缓存。
<% response.setHeader("Cache-Control","no-store"); response.setDateHeader("Expires",0); %>
使网页每隔10秒自动刷新一次,例
<% response.setHeader("refresh","10"); %>
使网页定时5秒跳转到相应网页,例
<% response.setHeader("refresh","5;URL=login.jsp"); %>
通常情况下,服务器要输出到客户端的内容不会直接写进客户端,而是先写到一个输出缓冲区。当满足一下三种情况之一,就会把缓冲区的内容写进客户端:
未完待续。。。