入职必备技能(四)表象JSP&逻辑Servlet
JSP语法基础
程序脚本
<% 程序脚本 %>
声明语法
<%! String str="LiuJinliang"; %>
输出表达式
实例1
<%! int i = 10;%>
<%= i %>
实例2
<%= getInfo() %>
包引入
<%@ page import = "java.util.*, java.io.*" %>
JSP的作用域
这里我只想说对我有用的东西:request作用域 以及 session作用域。
当然,本质上来说,这些作用域里面的变量都是servlet的变量。
request作用域:作用于当前页面以及通过request的请求转发转发方法跳转的下一个页面。set和get方法分别是:request.setAttrubute(“name”, “liujinlinag”),request.getAttribute(“name”);
session作用域:作用于当前页面及其有关联的所有页面,这不用说,作用域很大,基本上只要不关闭浏览器,session就一直在。
当然,如果仅是参数的传递,我们大可以使用表单提交的get及post方法
JSP程序的执行过程
JSP内置对象
out(代表输出流对象)
相较于response输出功能,添加了buffer机制,但是设置编码等还需要使用response。
response(封装返回到Http客户端的输出,向页面作者提供设置响应头标和状态吗的方式)
可以通过response对象来组织发送到客户端的数据,需要向客户端发送文字时直接使用,是HttpServletResponse的实例.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%! String str = "hello world"; %>
<% response.getWriter().print(str); %>
</body>
</html>
作用域:
request(代表客户端的请求)
request,自然就算是不同的request作用域了,但是相邻的web资源也是可以同时使用一个request作用域的。在request作用域里面设置变量的方式为<% request.setPa %>
人事管理系统
利用集合模拟数据库信息
用户登录:查看用户名及密码是否存在
request对象API获取请求数据
out对象输出信息
response对象输出相应信息
logon.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>人事管理系统</title>
</head>
<body>
<h3 align="center">人事管理系统登录页面</h3>
<hr>
<!-- 代表服务器端处理程序,根据username获取变量 -->
<form action="controller.jsp">
<table align="center">
<tr>
<td>用户名:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>密 码:</td>
<td><input type="text" name="password"></td>
</tr>
<tr>
<td><input type="submit" value="登录"></td>
</tr>
</table>
</form>
</body>
</html>
controller.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="natapp.liujinliang.*, natapp.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String username = request.getParameter("username");
String password = request.getParameter("password");
Emp emp = new Emp(username, password);
boolean flag = DBUtil.selectEmpByAccountAndPassword(emp);
if (flag == true) {
out.println("登录成功");
} else {
out.println("登录失败");
}
%>
</body>
</html>
剩余的代码是简单的java代码,下面给出:
package natapp.liujinliang;
public class Emp {
private String username;
private String password;
public Emp(String username, String password) {
super();
this.username = username;
this.password = password;
}
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;
}
}
package natapp.util;
import java.util.HashMap;
import java.util.Map;
import natapp.liujinliang.Emp;
public class DBUtil {
public static Map<String, Emp> map = new HashMap<String, Emp>();
static {
map.put("1", new Emp("Gene", "111"));
map.put("2", new Emp("Lin", "111"));
map.put("3", new Emp("Yue", "111"));
map.put("4", new Emp("Yi", "111"));
}
// 判断用户名密码是否正确
public static boolean selectEmpByAccountAndPassword(Emp emp) {
boolean flag = false;
for (String key : map.keySet()) {
Emp e = map.get(key);
if (emp.getUsername().equals(e.getUsername()) && emp.getPassword().equals(e.getPassword())) {
flag = true;
break;
}
}
return flag;
}
}
pageContext
1、通过forward完成请求转发
2、通过include完成页面包含
3、通过getXX来获取其他内置对象
page(代表了正在运行的由JSP文件产生的类对象)
JSP的实质就是一个Servlet
session
会话:代表用户第一次进入当前系统知道退出系统或关闭浏览器,在此期间与服务器的一系列交互。
主要用于会话跟踪
config
用来获取配置信息(是不是想起了web.xml文件)
exception(只能在错误页面中使用,如404.jsp)
用来获取异常信息
抛出异常并指定处理页面
<%page …… errorpage="2002.jsp" ……%>
……
<% ……throw new Exception("密码错误") …… %>
注意需要在2002.jsp页面中设置是否为错误处理页面
<% …… isErrorpage="true" …… %>
application(一个web程序对应一个application对象)
提供了关于服务器版本,应用级初始化参数和应用内资源绝对路径方式,也就是用来获取全局信息
application作用域:web生命周期
请求重定向与请求转发
1、转发实现是HttpServletRequest的方法,重定向调用的是HttpSServletResponse方法。
2、转发时浏览器地址栏不会改变,重定向地址栏会变化。
3、转发时浏览器只请求一次服务器,重定向2次。