后台开发学习——JSP和JavaBean
1、JSP里面绝对不应该出现与后端数据处理的任何的代码。
2、使用request和session完成向导式注册
Session在开发里面能不用就不用。尽量使用request的hidden类型(隐藏域类型)。因为session太多会占用服务器的资源。Session一般用在登录上。
代码示例:
①NewFile8.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>session与hidden</title>
</head>
<body>
<form method="post" action="NewFile9.jsp">
用户名:<input type="text" name="userName" placeholder="输入用户名" />
<input type="submit" value="提交" />
</form>
</body>
</html>
运行结果:
②NewFile9.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>提交用户名后的页面</title>
</head>
<body>
<% String username = null; %>
<p>
<%
username = request.getParameter("userName");
session.setAttribute("logName", username);
%>
您的姓名是:<%= username %>
</p>
<form method="post" action="NewFile10.jsp">
<%-- 使用session --%>
您的兴趣是:<br />
兴趣1:<input type="text" name="amusement1" placeholder="输入兴趣名" /><br />
<%-- 使用hidden --%>
兴趣2:<input type="text" name="amusement2" placeholder="输入兴趣名" /><br />
<input type="hidden" name="username" value="<%= username %>"/>
<input type="submit" value="提交" />
</form>
</body>
</html>
运行结果:
③NewFile10.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>提交兴趣后的页面</title>
</head>
<body>
<p>
<%
String user1 = (String)session.getAttribute("logName");
String hobby1 = request.getParameter("amusement1");
session.setAttribute("hobby", hobby1);
String user2 = request.getParameter("username");
String hobby2 = request.getParameter("amusement2");
%>
您的姓名是:<%=user1 %><br />
您的爱好是:<%=session.getAttribute("hobby") %><br />
<hr />
您的姓名是:<%=user2 %><br />
您的爱好是:<%=hobby2 %>
</p>
</body>
</html>
运行结果:
3、HttpServletResponse对象的sendRedirect(String location)方法称为重定向。如果location地址前面加上“/”,则表示相对于Servlet容器的根来请求,即“http://localhost:8080”,如果location地址前面没有加上“/”,则表示相对于当前请求的URI来寻找地址。
4、RequestDispatcher的forward(request, response)方法称为请求转发。
5、请求转发与重定向的区别:
①请求转发,整个过程处于同一个请求中。
②重定向,客户端会向服务器端发送两个请求。
③RequestDispatcher是通过调用HttpServletRequest对象的getRequestDispatcher()方法得到的,是属于请求对象的方法。
④)sendRedirect()是HttpServletResponse对象的方法,即响应对象的方法,既然调用了响应对象的方法,那就表明整个请求过程已经结束了,服务器开始向客户端返回执行的结果。
6、表单的确认:
(1)客户端确认:(可以使用JavaScript)
①减少服务器负载
②缩短用户等待时间
③兼容性难
(2)服务器端确认:
①统一确认
②兼容性强
③服务器负载重
7、JavaBean是一种可重复使用、且跨平台的软件组件。JavaBean可分为两种:一种是有用户界面(UI,User Interface)的JavaBean;还有一种是没有用户界面,主要负责处理事务(如数据运算,操纵数据库)的JavaBean。JSP通常访问的是后一种JavaBean。
一个JavaBean和一个JavaApplet相似,是一个非常简单的遵循某种严格协议的Java类。通过封装属性和方法成为具有某种功能或者处理某个业务的对象,简称bean。
8、前端MVC设计模式
Model模型:逻辑处理
View视图:页面的显示和样式展示
Controller控制器:用户与系统之间的连接
9、一个标准的JavaBean有一下几个特征:
1)JavaBean是一个公共的类,类中访问属性的方法都是public的,一般属性是private的;
2)JavaBean有一个不带参数的public的构造方法,方法体可以为空可以不为空
3)JavaBean通过setXXX方法设置属性,通过getXXX方法获取属性
Eg.
public class CounterBean{
private int count=0;
public CounterBean(){}
public int getCount(){
return count;
}
public void setCount(int count){
this.count=count;
}
}
10、JSP访问JavaBean的语法:
1)导入JavaBean类:通过<%@ page import=”com.remoa.CounterBean” %>指令导入JavaBean类;
2)声明JavaBean对象:通过<jsp:useBean id=”mybean” class=”com.remoa.CounterBean” scope=”session”></jsp:useBean>标签来声明JavaBean对象,id也就是对对象的一个引用,且变量名对大小写敏感;scope属性决定了JavaBean对象存在的范围,scope可选的范围时page(当前页面)、request、session、application。
3)访问JavaBean属性:
①将JavaBean的某个属性输出到网页上:<jsp:getProperty name=”mybean” property=”count” />
②给JavaBean的某个属性赋值:<jsp:setProperty name=”mybean” property=”count” value=”200”/>,value的值可以是字符串或者表达式,如果是字符串,那么它就会被转换成bean属性的类型,如果是一个表达式,那么它的类型就必须和将要设定的属性值的类型一致。
Property指定bean的属性名,param指定request的参数名
不能在同一个<jsp:setProperty>中同时使用param和value参数。