ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JAVA web的学习(一)

2021-06-18 18:32:50  阅读:124  来源: 互联网

标签:web JAVA 对象 request 学习 标识 JSP 属性 页面


文章目录

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()方法

在这里插入图片描述
未完待续。。。

标签:web,JAVA,对象,request,学习,标识,JSP,属性,页面
来源: https://blog.csdn.net/yyyayyy/article/details/118030038

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有