您的位置:首页 > 编程语言 > Java开发

java--jsp(Java Server Page)_3

2016-10-22 11:28 459 查看
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>JSP开发的几代技术</title>
</head>

<body>
<h2>JSP开发的几代技术</h2>
<a href="jsps/login1.jsp">第一代JSP开发技术1:纯JSP技术</a><br/><br/><br/>
<a href="jsps/login2.jsp">第一代JSP开发技术2(model1):JSP+EJB技术</a>
<h4>第二代JSP开发技术(model2):MVC框架=JSP+JaveBean+Servlet技术</h4>
<hr/>
<h2>以下演示jsp中bean标记的使用</h2>
1、声明JavaBean对像-必须使用完整类名<br/>
<jsp:useBean id="u" class="cn.hncu.ejb.User" scope="session"></jsp:useBean>
<!-- 以上声明相当于:
User u = new User();
session.setAttribute("u",u);
scope的可选值为:page|request|session|application
-->
<%
u.setName("jack");
out.println(u.getName());
%>
<br/>
2、访问JavaBean的属性<br/>
<jsp:getProperty property="name" name="u"/><br/>
<jsp:setProperty property="age" name="u" value="23"/>
<jsp:getProperty property="age" name="u"/>
<h4> 使用"jsp:setProperty"标记为birthday(复杂类型)设置属性:</h4>
<!--注意,如果仅仅只把User中的birthDay变量改为birth,下面的属性名不要用"birth",
因为底层是根据下面property中的取值生成对应的setter-getter方式名,再到JavaBean中调用对应方式。
< jsp:setProperty property="birth" name="u" value="2016-09-26"/>是错的
-->
<jsp:setProperty property="birthDay" name="u" value="2016-09-26"/>
<jsp:getProperty property="birthDay" name="u"/>
<%  out.println( u );  %> <br/>

3、通过param属性给JavaBean赋值<br/>
<jsp:useBean id="u2" class="cn.hncu.ejb.User" scope="session"></jsp:useBean>
<form action="jsps/a.jsp">
姓名1:<input type="text" name="nm"/><br/>
姓名2:<input type="text" name="name"/><br/>
年龄:<input type="text" name="age"/><!-- 提供字符串到int类型的转换 --><br/>
<input type="submit" value="注册"/>
</form>
</body>
</html>




使用JSP的原则

在项目的开发中(除非这个公司是个菜鸟公司),JSP只用做展示,所有的用户操作,都是从JSP页面将请求发给Servlet处理,Servet在处理完成后,再转发给其他JSP页面。这就是基本的MVC设置模式,也即Model1。

在JSP页面中,一般不会出现<% ..%>这样的java代码块。需要输出时使用jsp的自定义的标签来处理,这样JSP就更像是HTML页面了。(此技术后面会讲)。

第一代JSP开发技术1:纯JSP技术

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>

<body>
<!-- 处理表单的JSP可以用单独的JSP来实现 -->
<!--
<form action="login1.jsp">提交给自己处理
-->
<form action="login1Serv.jsp">
Name:<input type="text" name="name" /><br/>
<input type="submit" value="登录">
</form>
</body>
</html>


登陆失败





<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>

<body>
<!-- 处理表单的JSP可以用单独的JSP来实现,可以写在login1.jsp页面中 -->
<%
request.setCharacterEncoding("utf-8");
String name = request.getParameter("name");
if(name!=null && name.startsWith("hncu")){//在这里访问后台(用普通类写或直接在这里写访问后台的代码)
session.setAttribute("user", name);
response.sendRedirect(request.getContextPath()+"/jsps/suc.jsp");
}else{
out.println("登录失败!");
}
%>

</body>
</html>


登陆成功





第一代JSP开发技术2(model1):JSP+EJB技术

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>

<body>
<!-- 处理表单的JSP可以用单独的JSP来实现 -->
<form action="login2Serv.jsp">
Name:<input type="text" name="name" /><br/>
<input type="submit" value="登录">
</form>
</body>
</html>


登陆失败





<%@page import="cn.hncu.ejb.User"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>

<body>
<!-- 处理表单的JSP可以用单独的JSP来实现 -->
<%
request.setCharacterEncoding("utf-8");
//EJB = 企业级JavaBean = 包含业务逻辑的JavaBean
//把用户提交的登录参数收集并封装成JavaBean
String name = request.getParameter("name");
User u = new User();
u.setName(name);

//调用EJB中的业务逻辑层代码
User user = u.login();
if(user!=null){//在这里访问后台(用普通类写或直接在这里写访问后台的代码)
session.setAttribute("user", user);
response.sendRedirect(request.getContextPath()+"/jsps/suc.jsp");
}else{
out.println("登录失败!");
}

%>

</body>
</html>


登陆成功





第二代JSP开发技术(model2):MVC框架=JSP+JaveBean+Servlet技术:http://blog.csdn.net/xanlv/article/details/52822352

jsp中bean标记的使用

JavaBean简介

JavaBean是一种可重用的软件组件。

一个JavaBean具有以下标准:

必须是一个公共的类。

一个公开的无参的构造。

getXxx和setXxx方法。

在JSP中访问JavaBean的语法:

声明JavaBean对像-必须使用完整类名

< jsp:useBean id=”u” class=”cn.hncu.ejb.User” scope=”session”>< /jsp:useBean>

注:一般情况下,我们保留< jsp:useBean/>的body部分为空,如果不为空,则只有初始化此Bean时执行,如:

< jsp:useBean id=”u” class=”cn.hncu.ejb.User” scope=”session”>

这是body部分,只会在初始化时执行一次

< /jsp:useBean>

访问JavaBean的属性

< jsp:setProperty property=”age” name=”u” value=”23”/>

< jsp:getProperty property=”age” name=”u”/>

也可以在页面上使用Java代码直接访问它的属性和其他方法。

JavaBean的范围

JavaBean的scope属性决定的Bean的范围,默认为page范围。

当声明了一个Bean并将它放到某个范畴之后,在同一个范围内再次使用< jsp:useBean../>将不再创建。而是直接给你返回已经创建过的Bean的实例。此过程可以通过查看容器翻译的源代码得知。

通过param属性给JavaBean赋值:

JavaBean可以接收用户通过参数提交的数值,并直接封装到JavaBean中。

以下JavaBean的属性全部为String类型。

以下接收用户的三个参数直接赋值:注意保持与参数指定的名相同

< jsp:setProperty property=”name” name=”u” param=”nm”/>

一次设置全部属性:

< jsp:setProperty name=”u2” property=”*”/>注意不能使用param

注意:一次设置全部的参数,其内部通过反射加以实现,所以,

在你向Bean传递参数时,必须与JavaBean的属性名高度一致。

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>设置bean中的属性</title>
</head>

<body>
<h2>演示jsp中bean标记的使用</h2>
<h4> 利用请求表单上传的参数来设置bean中的属性 </h4>
<jsp:setProperty property="name" name="u" param="nm"/>
u:${u}<br/><br/>
<h4>自动装配bean: 把表单参数名与bean中属性名一一对应地进行读参且设置属性</h4>
<jsp:setProperty name="u2" property="*"/>
u2:${u2}
</body>
</html>






调用JavaBean的其他方法

在JavaBean中除了可以通过标签调用它的的属性之外,还可以直接在scriptlet直接调用它的其他方法。

这种方式比较适合较小的项目。

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>

<body>
欢迎你,<%=session.getAttribute("user")%> <br/>
<h2>以下是用户相应的操作界面</h2>
<h2>以下是用户相应的操作界面</h2>

</body>
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jsp