JAVA web的学习(一)
2021/6/18 20:29:17
本文主要是介绍JAVA web的学习(一),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- JAVA web
- 搭建开发环境
- demo代码
- index.jsp
- HelloServlet
- JSP学习
- JSP基本语法
- 指令标识
- page指令
- include指令
- taglib指令
- 脚本标识
- JSP表达式
- 声明标识
- 代码片段
- 注释
- 单行注释
- 多行注释
- 提示文档注释
- 隐藏注释
- 动态注释
- 动作标识
- 包含文件标识
- 请求转发标识
- 传递参数标识
- JSP内置对象
- request对象
- 访问请求参数
- 在作用域中管理属性
- 获取cookie
- 解决中文乱码
- 获取客户端信息
- 显示国际化信息
- response对象
- 重定向网页
- 处理HTTP文件头
- 禁用缓存
- 通过页面自动刷新
- 定时跳转页面
- 设置输出缓冲
JAVA web
搭建开发环境
安装IDEA开发版
安装JDK并配置环境变量
安装Tomcat
IDEA创建WEB项目并进行相关配置
运行服务器测试demo项目
如图
IDEA创建web项目的目录结构
demo代码
index.jsp
<%@ 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>
HelloServlet
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学习
JSP基本语法
指令标识
JSP指令标识如下
<%@ 指令名 属性1="属性值 1" 属性2="属性值 2".....%>
指令名包含page、include、taglib三条指令
属性用逗号或空格分隔
例如
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
page指令
定义整个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字符串
include指令
可以包含另一个JSP页面,静态包含,被包含文件中所有内容会被原样包含到该JSP页面中,被包含和包含的文件不可以有相同名称的变量.使用其可以大大提高代码的重用性,也便于以后维护和升级.如
<%@ include file="path"%>
taglib指令
在JSP中,可以通过taglib指令标识声明该页面中所使用的标签库,同时引用标签库,并指定标签的前缀。格式为:
<% taglib prefix="tagPrefix" uri="tagURI"%>
prefix:用于指定标签前缀,不能命名为jsp、jspx、java、javax、sun、servlet、sunw
uri:用于指定标签库文件的存放位置
脚本标识
包括JSP表达式、声明标识和脚本程序
JSP表达式
格式为:
<%= 表达式%>
%与=之间不允许有空格
声明标识
声明标识用于在JSP页面中定义全局的变量或方法。格式为
<%! 声明的变量或者方法 %>
代码片段
所谓的代码片段就是JSP页面中嵌入的Java代码或者脚本代码。代码片段在页面请求的处理期间被执行,通过Java代码可以定义变量或流程控制语句等;通过脚本代码可以应用JSP的内置对象在页面输出内容、处理请求和响应、访问Session会话等。格式为
<% Java代码或是脚本代码 %>
注释
单行注释
//
多行注释
/* */
提示文档注释
/** */
隐藏注释
<%-- 注释内容 --%>
在浏览器中看不到,查看HTML源代码时也看不到
动态注释
动作标识
包含文件标识 jsp:include
JSP的动作标识用于向当前页面包含其它动态或静态文件。格式为
<jsp:include page="url" flush="false|true" /> 或 <jsp:include page="url" flush="false|true" /> 子动作标识<jsp:param> </jsp:include>
flush用于设置是否刷新缓冲区,默认为false.
子动作标识用于向被包含的动态页面中传递参数
请求转发标识 jsp:forward
通过请求转发标识可以将请求转发到其它的Web资源。例如,另一个JSP页面、HTML页面、Servlet等。执行请求转发后,当前页面不再被执行,而是去执行该标识指定的目标页面。格式为
<jsp:forward page="url"/>
传递参数标识jsp:param
JSP的传递参数标识可以作为其它标识的子标识,用于为其它标识传递参数。格式为
<jsp:param name="参数名" value="参数值" />
例:
<jsp:forward page="modify.jsp"> <jsp:param name="userId" value="7"/> </jsp:forward>
在上面的代码中,实现了在请求转发到modify.jsp页面的同时,传递了参数userId,其参数值为7.它的功能与在文件名后面直接加"?参数名=参数值"效果是相同的
JSP内置对象
request对象
访问请求参数
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可以标识用户身份,记录用户名和密码,跟踪重复用户等。
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 %>
response对象
重定向网页
使用sendRedirect()方法可以将网页重定向到另一个,与转发不同,它支持将地址重定向到不同的主机。重定向后,request中的属性全部失效,并且重新开始一个新的request对象。格式为
response.sendRedirect(String path);
path:可以为相对路径,也可以是不同主机的其它URL地址
处理HTTP文件头
通过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"); %>
设置输出缓冲
通常情况下,服务器要输出到客户端的内容不会直接写进客户端,而是先写到一个输出缓冲区。当满足一下三种情况之一,就会把缓冲区的内容写进客户端:
- JSP页面的输出信息已经全部写入到了缓冲区。
- 缓冲区已满
- 在JSP页面,调用了response对象的flushBuffer()方法或out对象的flush()方法
未完待续。。。
这篇关于JAVA web的学习(一)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)