java隐含对象_javaweb之jsp的九个隐含对象与基本语法

1.在页面上可以不用声明直接使用的对象称为jsp页面的隐含对象。使用编写的java代码在_jspService方法中,如下:

public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)

throws java.io.IOException, javax.servlet.ServletException {

final javax.servlet.jsp.PageContext pageContext;

javax.servlet.http.HttpSession session = null;

final javax.servlet.ServletContext application;

final javax.servlet.ServletConfig config;

javax.servlet.jsp.JspWriter out = null;

final java.lang.Object page = this;

javax.servlet.jsp.JspWriter _jspx_out = null;

javax.servlet.jsp.PageContext _jspx_page_context = null;

}

写在_jspService方法中的java代码可以用到的jsp页面的隐含对象包括:

PageContext pageContext;

HttpSession session;

ServletContext application;

ServletConfig config;

JspWriter out;

Object page=this;

HttpServletRequest request;

HttpServletResponse response;

exception;

1.request:HttpServletRequest的一个对象;

2.response:HttpServletResponse的一个对象(在jsp页面几乎不会调用response对象);

3.pageContext:页面上下文,是PageContext的一个对象,可以从该对象中获取到其他8个隐含对象,也可以获取到当前页面的其他信息;

4.session:代表浏览器和服务器的一次会话,是HttpSession的一个对象;

5.application:代表当前web应用,是ServletContext对象;

6.config:当前JSP对应的Servlet的ServletConfig对象(几乎不使用)。若需要访问当前JSP配置的初始化参数,需要通过映射的地址才可以。

7.out:JspWriter对象,调用out.println()可以直接把字符串打印到浏览器上。

8.page:指向当前JSP对应的Servlet对象的引用,但为Object类的方法,几乎不使用。

9.exception:只有咋辅助声明了page isErrorPage="true"时才可以使用。

其中page对象,request和response已经完成了实例化,而其它5个没有实例化的对象通过下面的方式实例化。

1 pageContext = _jspxFactory.getPageContext(this, request, response,null, true, 8192, true);

2 application = pageContext.getServletContext();

3 config = pageContext.getServletConfig();

4 session = pageContext.getSession();

5 out = pageContext.getOut();

2.JSP的基本语法

2.1 JSP模版元素

JSP页面中的静态HTML内容称为JSP模版元素,它定义了网页的基本骨架,即定义了页面的结构和外观。比如我新建一个,jsp文件,建好之后里面的内容如下:

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

My JSP 'hello.jsp' starting page

This is my JSP page.

在静态的HTML内容之中可以嵌套JSP的各种元素来产生动态内容和执行业务逻辑。

2.2 JSP表达式

JSP表达式提供了一个将java变量或表达式的计算结果输出到客户端的简化方式。它将要输出的变量或表达式直接封装在 之中。语法为:。

例如,在上面创建的hello.jsp文件中,编写java代码:

Date date=new Date();

out.println(date);

%>

out.println(date);和的输出效果一致,运行后结果如下:

738523c6dfb080109e895d5b2aab6abf.png

2.3 JSP脚本片段

JSP脚本片断(scriptlet)用于在JSP页面中编写多行Java代码。在JSP脚本片段中,可以定义变量,执行基本的程序运行,调用其他java类,访问数据库,访问文件系统等普通java程序所能实现的功能。语法:

多行java代码

%>

在中可以定义变量、编写语句,不能定义方法。需要注意:

1.JSP脚本片断中只能出现java代码,不能出现其它模板元素, JSP引擎在翻译JSP页面中,会将JSP脚本片断中的Java代码将被原封不动地放到Servlet的_jspService方法中。

2.JSP脚本片断中的Java代码必须严格遵循Java语法,例如,每执行语句后面必须用分号(;)结束。

3.在一个JSP页面中可以有多个脚本片断,在两个或多个脚本片断之间可以嵌入文本、HTML标记和其他JSP元素。

多个脚本片断中的代码可以相互访问,犹如将所有的代码放在一对之中的情况。单个脚本片断中的Java语句可以是不完整的,但是,多个脚本片断组合后的结果必须是完整的Java语句。

2.4 JSP声明

JSP页面中编写的所有代码,默认会翻译到servlet的service方法中, 而Jsp声明中的java代码被翻译到_jspService方法的外面。语法:

java代码

%>

所以,JSP声明可用于定义JSP页面转换成的Servlet程序的静态代码块、成员变量和方法 。多个静态代码块、变量和函数可以定义在一个JSP声明中,也可以分别单独定义在多个JSP声明中。JSP隐式对象的作用范围仅限于Servlet的_jspService方法,所以在JSP声明中不能使用这些隐式对象。

示例代码如下:

static {

System.out.println("loading Servlet!");

}

private int globalVar = 0;

public void jspInit(){

System.out.println("initializing jsp!");

}

%>

public void jspDestroy(){

System.out.println("destroying jsp!");

}

%>

2.5 JSP注释

在JSP中,注释有两大类:

显式注释:直接使用HTML风格的注释:

隐式注释:直接使用JAVA的注释://、/*……*/

JSP自己的注释:

JSP自己的注释和HTML注释的区别:JSP自己的注释可以阻止java代码的执行。

示例如下:

--%>

运行后在控制台输出如下结果:

bd2c91dd3fedca237d916e634fac5293.png

搜搜微信公众号“程序员考拉”,欢迎关注!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的JavaWeb登录功能实现代码示例: ```java // 导入必要的包 import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { // 设置响应内容类型 response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html><head><title>Login</title></head><body>"); out.println("<h1>JavaWeb登录功能实现</h1>"); // 获取表单参数 String username = request.getParameter("username"); String password = request.getParameter("password"); // 检查登录信息是否正确 if (username.equals("admin") && password.equals("admin")) { // 创建会话并将用户名存储在会话 HttpSession session = request.getSession(true); session.setAttribute("username", username); // 重定向到成功页面 response.sendRedirect("success.jsp"); } else { // 登录失败 out.println("<p>用户名或密码错误,请重新输入!</p>"); out.println("<a href='login.jsp'>返回登录页面</a>"); } out.println("</body></html>"); out.close(); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { doGet(request, response); } } ``` 在上述代码,我们使用了 `doGet` 方法来处理 GET 请求和 `doPost` 方法来处理 POST 请求。当用户提交登录表单时,我们获取表单的用户名和密码,并在后台验证。如果登录信息正确,我们创建一个会话并将用户名存储在会话,然后重定向到成功页面。如果登录信息不正确,则返回登录页面并显示错误消息。 这只是一个简单的示例,实际的登录功能可能需要更多的验证和安全措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值