JavaEE学习笔记之JSP+Servlet(一)

本文介绍了JSP的工作原理,包括其如何与客户端交互以及Servlet的生命周期。并通过一个登录验证实例展示了JSP页面、Servlet和JavaBean的具体应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、工作原理

JSP包括了指令,动作标签,内部对象等。客户端请求web应用的JSP页面时,web服务器会把请求对象(request)交给JSP引擎。如果JSP是第一次被访问,JSP引擎(JSP文件的编译器)将会将JSP文件编译成Java的类文件(如果不是第一次访问,即要访问的JSP页面已经编译好了,将不再编译),Java的类文件是可以直接被JVM加载的,不管何种语言,只要能够编译成符合Java语言规范的类文件(.class文件),就可以被JVM加载运行。web服务器会将JSP引擎翻译成的类文件加载到内存运行,并将结果封装到response对象中,以HTML等形式通过web服务器返回给客户端。所以JSP页面是程序与客户交互的门窗,简单的说,可以将JSP页面理解问程序的界面。

Servlet是一个Java语言编写的程序。当服务器启动或者第一次访问servlet的时候,web容器加载servlet,servlet的生命周期包括三个阶段:初始化、服务和销毁。主要包括三个函数,分别是init()函数,实现servlet的初始化,destory()实现servlet的销毁,service()实现servlet的服务功能,所谓的服务也就是对数据的处理。例如doGet()和doPost()。对于具体调用那个函数服务,需要根据客户端提交数据的方式,一般包括四种,get,post,put和delete。对于这四种方法,服务器会判断哪一种方法提交的,然后调用相应的函数进行数据处理。

JavaBean是一个普通的Java类,主要是将客户端提交的信息封装成一个对象。可能会有疑问,前面不是说,request对象不是用来封装客户端提交的信息吗?request的实现应该是一个map或类似与map的数据结构实现,保存的是客户端提交的所有的数据,存放方式是键值对。而JavaBean是一个有“意义”的Java类。

二、代码实例

下面的代码实现的主要功能是在登录验证。主要流程是通过Login.jsp页面登录,然后通过Login.java(也就是一个servlet)进行处理,处理的时候,先从request对象中提取所需数据,将数据封装到user对象中,然后调用User类中的判断函数,如果符合要求(用户名和密码一样且不为空),则跳转到success.jsp页面,否则重定向到failure.jsp页面。

详细代码如下:

Login.jsp

<%@ page language="java" contentType="text/html; charset=GB2312" %> <html> <head> <title>Login</title> </head> <body> <form action="Login" method="get"> 帐号:<input type="text" name="username"/><br/> 密码:<input type="password" name="password"/><br/> <input type="submit" name="submit" value="submit"/> </form> </body> </html>

servlet类(Login.java)

package edu.cn.servlets; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import edu.cu.beans.User; public class Login extends HttpServlet { public Login() { super(); } public void destroy() { super.destroy(); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获得参数 String username = request.getParameter("username"); String password = request.getParameter("password"); if (username == null) { username = ""; } if (password == null) { password = ""; } User user = new User(username, password); // 逻辑判断 if (user.volidate()) { // 跳转到登录成功页面 RequestDispatcher rd = request.getRequestDispatcher("success.jsp"); rd.forward(request, response); } else { // 重定向到登录界面 response.sendRedirect("failure.jsp"); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } public void init() throws ServletException { } }

JavaBean类(User.java)

package edu.cu.beans; import javax.servlet.RequestDispatcher; public class User { private String username; private String password; public User(String username,String password){ this.password = password; this.username = username; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public boolean volidate(){ if (username.length() != 0 && password.length() != 0) { if (username.equals(password)) { return true; } } return false; } }

success.jsp

<%@ page language="java" contentType="text/html; charset=gb2312"%> <html> <head> <title>success</title> </head> <body> <% out.print(request.getParameter("username")); out.println(",你好!恭喜你登录成功!"); %> </body> </html>

failure.jsp

<%@ page language="java" contentType="text/html; charset=GB2312"%> <html> <head> <title>Failure</title> </head> <body> 登录失败!<a href="Login.jsp">点此重新登录</a> </body> </html>


转载请注明出处:http://blog.youkuaiyun.com/ljp2009012843/article/details/7589001

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值