首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

JavaEE 五开发指南学习(创建和部署jsp的web应用2)

2012-12-24 
JavaEE 5开发指南学习(创建和部署jsp的web应用2)下面是一个使用标准操作和内置对象的例子。这个例子扩展了

JavaEE 5开发指南学习(创建和部署jsp的web应用2)
下面是一个使用标准操作和内置对象的例子。这个例子扩展了上一个例子,增加了一个注册页面。使用JavaBean,还是用内置对象request来读取请求参数。
目录结构如下:



首先创建一个JavaBean。
User.java

package com.apress.faq;public class User {private String firstName;private String surname;private String loginName;private int age;...get,set方法}}

然后对welcome.jsp修改,如下:
<%@ page errorPage="/WEB-INF/errorPage.jsp"                   import = "java.util.*,com.apress.faq.*" %><html><head><title>Java FAQ Welcome page!</title></head><body><%User user =(User)session.getAttribute("user");if(user==null){%>You are not registered!please<a href = "register.html"> Register</a><%} else{%>Welcome to the java FAQ.<%! FaqCategories f = new FaqCategories(); %>click a link below for answers to the given topic.<%Iterator it = f.getAllCategories();while(it.hasNext()){String s = (String)it.next();%><p><a href="<%=replaceUnderscore(s) %>.jsp"><%=s %></a></p><% } %><%@ include file = "WEB-INF/footer.jspf" %><% } %></body></html><%!public String replaceUnderscore(String s){ return s.replace(' ','_'); }%>

regiter.html
<html><head><title>Registeration page</title></head><body><form action="register.jsp" method="POST"><table><tr><td align="right">First name:</td><td align="left"><input type="text" name="firstName"></td></tr><tr><td align="right">sur name:</td><td align="left"><input type="text" name="surname"></td></tr><tr><td align="right">Login name:</td><td align="left"><input type="text" name="loginName"></td></tr><tr><td align="right">Age:</td><td align="left"><input type="text" name="firstName"></td></tr></table>which topic are you interested in?<br><input type="checkbox" name="topics" value="hobby">hobby</input><br><input type="checkbox" name="topics" value="study">study</input><br><input type="checkbox" name="topics" value="thread">thread</input><p><input type = "submit" value="Submit" /></p></form></body></html>

register.jsp
<html><head><title>register user!</title></head><body><jsp:useBean id="user" scope="session" property="*" /></jsp:useBean>welcome new user,these are the values you submited:<p>Your firstname is<%=user.getFirstName() %>.</p><p>Your surname is<%=user.getSurname() %>.</p><p>Your loginName is<%=user.getLoginName() %>.</p><p>Your age is<%=user.getAge() %>.</p>You selected these topics:<%String[] topics = request.getParameterValues("topics");if(topics==null){topics=new String[]{"No topics"};}for(int i =0;i<topics.length;i++){%><br><%=topics[i] %><%}%><p>Go to <a href="welcome.jsp">Topic List page</a></p><%@ include file = "WEB-INF/footer.jspf" %></body></html>

http是无状态的协议,但是web应用可以通过使用session来保存一个客户端和服务器端的交互信息。第一次访

问一个新网页时,速度会很慢,因为服务器要进行解释和编译,如将jsp编译为servlet。servlet的目标是在

服务器中运行java代码以扩展服务器的能力。HttpServlet是运行在HTTP服务器上的Servlet。这个Servlet接

收从客户端发来的HTTP请求,并且为每个请求创建动态的响应。这个Servlet还要通过ServletContext访问应

用,通过ServletConfig对象访问Servlet的参数。

jsp是html中嵌入java代码,而servlet是java代码嵌入html,这将导致程序非常难以维护,特别是在团队中的java程序员并不擅长web开发的情况下更是如此。可以使用表达式语言(EL)、定制操作和标签库(TL)。
首先是page指令的import属性变成了import语句。
package org.apache.jsp;import javax.servlet.*;import javax.servlet.http.*;import javax.servlet.jsp.*;import java.util.*;import com.apress.faq.*;
下面是class语句
public final class welcome_jsp extends org.apache.jasper.runtime.HttpJspBase    implements org.apache.jasper.runtime.JspSourceDependent {

该类扩展了HttpJspBase,Web应用的Servlet扩展自HttpServlet。
接着将jsp页面中的两个声明转化为java源码中的一个变量声明和一个公共方法声明。
jsp的主要部分包含在_jspService()方法中。
public void _jspService(HttpServletRequest request, HttpServletResponse response)        throws java.io.IOException, ServletException {    PageContext pageContext = null;    HttpSession session = null;    ServletContext application = null;    ServletConfig config = null;    JspWriter out = null;    Object page = this;    JspWriter _jspx_out = null;    PageContext _jspx_page_context = null;
在servlet中与之对应的方法是service()。

热点排行