简单web工程创建步骤和jsp语法大全(配合代码).docx

上传人:jian****018 文档编号:8960549 上传时间:2020-04-02 格式:DOCX 页数:54 大小:31.49KB
返回 下载 相关 举报
简单web工程创建步骤和jsp语法大全(配合代码).docx_第1页
第1页 / 共54页
简单web工程创建步骤和jsp语法大全(配合代码).docx_第2页
第2页 / 共54页
简单web工程创建步骤和jsp语法大全(配合代码).docx_第3页
第3页 / 共54页
点击查看更多>>
资源描述
5.1 web工程环境配置1、 安装MyEclipse略2、 安装jdk,并在“我的电脑”“高级系统设置”“环境变量”中配置系统变量。i. 新建“JAVA_HOME”,value为C:Program FilesJavajdk1.6.0_10(即jdk的安装路径)ii. 在 “CLASSPATH”的value中增加.;%JAVA_HOME%lib;%JAVA_HOME%libtools.jar;%JAVA_HOME%libdt.jar;iii. 在“Path” 的value中增加%JAVA_HOME%bin;%JAVA_JRE_HOME%bin;3、 安装tomcat,并配置MyEclipse的server。在MyEclipse的菜单栏中点击“Window”“preferences”“MyEclipse”“Servers”“Tomcat”点击“Tomcat 6.x”,选择“Tomcat home directory”等为tomcat的安装路径,默认为“C:Program FilesApache Software FoundationTomcat 6.0”,然后勾选“Enable”,点击“Apply”“ok”。4、 安装MySQL。运行MySQL安装软件(如mysql-5.5.21-win32.ext)。启动mysql:在cmd中输入net start mysql界面客户端访问mysql,可以下载一个SQLyog程序。(安装mysql时如果没有指定用户名、密码可以通过我的程序中mysql下的configuration配置)5、 对于要访问数据库mysql的web工程在工程的Referenced Libraries中添加mysql的jdbc包。在MyEclipse中右键项目,点击“Build Path”,点击“Add External Archives”选择本地路径中的mysql的jdbc包,如mysql-connector-java-5.1.6-bin.jar5.2 web工程创建和运行过程1、 创建一个web工程。在MyEclipse左侧工程区NewWeb Project输入“Project Name”,选择对应的“J2EE Specification Level”(如Java EE 6.0)“finish”2、 部署web工程。在MyEclipse的工具栏中点击部署按钮(按钮提示信息为Deploy MyEclipse J2EE Project to server),在弹出“Project Deployments”窗口中点击“Add”按钮,在弹出“New Deployment”窗口中点开“server”项的下拉列表,从中选择“Tomcat 6.0”“finish”3、 启动Tomcat。在MyEclipse的工具栏中点击运行按钮(按钮提示信息为Run/Stop/Restart MyEclipse Servers),选中“Tomcat 6.0”,可以看到代码下方Design区域的Console标签页中有tomcat运行的信息。4、 访问web工程。在代码下方Design区域的Web Browser标签页的Location中输入http:/localhost:8080/web工程名/首页或要访问的页即可。如http:/localhost:8080/example/index.jsp(工程名为example,首页为index.jsp)5.3 jsp语法代码详解5.3.1 jsp注释jsp注释Html注释以上两种都不能写在中。javaScript注释与java相同Html注释注释中不能写jsp动态指令,因为会把它们当成动态执行执行,如果一定要写,把两边的对去掉,例如:!此处用实现页面引入-应修改为:5.3.2 编译指令和动作指令 jsp中有三个编译指令 jsp中有7个动作指令 Jsp中include、forward、plugin三个动作指令都有两种写法第一种:第二种: useBean、getProperty和setProperty三个指令只有第一种写法,因为他们不能与param结合使用。 Jsp编译指令都不带/,且属于java脚本,格式为例如: 应用举例n %page import=njava.sql.* % %include file=njsp/jspHead.jsp%n n n n n n 5.3.3 页面引入方法一、include编译指令例如:在welcome.jsp页中引入WebRoot下jsp文件夹中的jspHead.jsp 页面注意,被引入页中如果有页面跳转语句,一定要注意相对路径!相对路径为跳转页相对引入页的路径!而不是跳转页相对被引入页的路径方法二、include动作指令例如:在welcome.jsp页中引入WebRoot下jsp文件夹中的jspHead.jsp 页面5.3.4 页面跳转方法一、重定向response的sendRedirect方法,会丢失所有的请求参数和request范围的属性方法二、jsp:forward指令,不会丢失请求参数如果跳转不带参数:如果跳转带参数: 方法三、通过request转发RequestDispatcher rd = request.getRequestDispatcher(index.jsp);rd. forward(request,response);区别:sendRedirect会丢失所有的请求参数和request范围的属性,因为重定向将生成第二次请求。 /这个路径应该写forward目标文件与include当前文件的文件的相对路径!即index.jsp相对welcome.jsp的路径 /区别在于sendRedirect之后不能再执行sendRedirect语句或forward指令 /而forward指令之后还可以执行forward指令 /response.sendRedirect(index.jsp); /forward中的param为可选项,如果不增加请求参数,则不需要加而直接在结尾加个“/”即可 /即此处可写成 % %5.3.5 调用javaBean调用javaBean有两种方式:方法一:使用jsp动态指令,然后使用和指令今日特价:方法二:new一个javaBean的对象,调用对象的get、set方法 改变javabean对象的scope并获取其属性值% pageContext.setAttribute(p1,p1); request.setAttribute(p1,p1); session.setAttribute(p1,p1); application.setAttribute(p1,p1); out.println(不同scope的javabean调用:); Product p2 = (Product)pageContext.getAttribute(p1); out.println(page范围javaBean的name属性:+p2.getName()+);%5.3.6 9个内置对象内置对象 属于哪个类的实例 常用方法config javax.servlet.ServletContext的实例代表该jsp的配置信息 getInitParameter(String paramN)getInitParameters()application javax.servlet.ServletConfig的实例代表jsp所属的web应用 getInitParameter(String paramN)getAttribute(String attN)setAttribute(String attN,String attVal)属性值只能是String类型session javax.servlet.http.HttpSession的实例代表一次会话,客户端浏览器与站点建立连接时开始,客户端关闭浏览器时结束 getAttribute(String attN)setAttribute(String attN,Object attVal)属性值可以是任意类型request javax.servlet.http.HttpServletRequest的实例封装客户的一次请求,可获取客户的请求参数 getAttribute(String attN)getParameter(String paramN)String getParameterValues(String paramN)当请求参数有多个值时Enumeration getParameterNames()setAttribute(String attN, Object attVal)属性值可以是任意类型getRequestDispatcher(String url)获取转发对象,返回RequestDispatcher对象,该对象有forward(request,response)方法即完成转发到url页面。response javax.servlet.http.HttpServletResponse的实例代表服务器端的响应,一般生成非字符串响应时用,否则用out响应 getOutputStream()sendRedirect(java.lang.String location)page 相当于thispageContext javax.servlet.jsp.pageContext的实例代表jsp页面上下文,可访问页面之间共享的数据。使用pageContext可以访问page、request、session、application范围的变量 getServletContext()getServletConfig()getAttribute(String attN)getAttribute(String attN,int scope)setAttribute(String attN,String val)被赋值变量默认为page范围setAttribute(String attN,String val,pageContext.REQUEST_SCOPE)被赋值变量可以是REQUEST、SESSION、APPLICATION范围out javax.servlet.jsp.JspWriter的实例 print(String p)println(String p)exception java.lang.Throwable的实例 getMessage()getStackTrace()使用举例: 获取jsp的配置参数信息 输出为jspn 获取web.xml中jsp页面配置信息的属性值n注意!此例不能通过访问index.jsp来访问对应的页面,而应通过servlet配置的路径indexConfigPath1来访问,config.getInitParameter(“name”)处的结果为“张三“。如果访问原来index.jsp的地址,config.getInitParameter(“name”)处的结果为null例如:加入原来访问index.jsp的地址为http:/localhost:8080/suda/index.jsp那么加入页面配置信息后的访问地址为http:/localhost:8080/suda/indexConfigPath1代码如下:Web.xml中要定义相应的jsp页面配置信息 indexConfig /index.jsp name 张三 age 28 indexConfig /indexConfigPath1 将用户名保存到session对象中 从web.xml文件中获取web应用配置参数Web.xml中要定义相应的配置参数 driver com.mysql.jdbc.Driver url jdbc:mysql:/localhost:3306/suda dbUser root dbPass 1111115.3.7 GET和POST客户端发送请求参数分两种情况:GET方式和POST方式GET方式:表单无method或method为“get“,请求传输数据量较小,请求参数名和值附在原URL之后传输。请求以url?param1=value1¶m2=value2&ParamN=valueN获取get请求里包含的请求参数和值:方法一、使用URLDecoder解码/解码前的请求字符串String rawQueryStr = request.getQueryString();/使用URLDecoder解码后的字符串String queryStr = java.net.URLDecoder.decode(rawQueryStr,”gb2312”);String paramPairs = queryStr.split(“&”);for(String paramPair : paramPairs) String nameValue = paramPair.split(“=”); String paramName = nameValue0; String paramValue = nameValue1;方法二、直接用ISO-8859-1字符串分解成字节数组,然后在重新解码成字符串byte rawBytes = rawName.getBytes(“ISO-8859-1”);String name = new String(rawBytes,”gb2312”);POST方式:表单method为“post“,请求参数大小一般无限制。请求参数名和值放在HTML HEADER中传输,安全性较高获取post请求里包含的的请求参数和值:/当请求参数只有一个值时String paramValue=request.getParameter(String paramName);/当请求参数有多个值时String paramValues=request.getParameterValues(String paramName);如果不知道paramName可通过getParameterNames方法获取,然后遍历。5.3.8 表单 用户名:* 设置密码:* 确认密码:* 手机: 邮箱: 性别: 男 女 定制邮件: 定制每天打折促销邮件 定制每周打折促销邮件 定制每月打折促销邮件 定制每年打折促销邮件 购物兴趣:服装鞋帽 家用电器 手机数码 电脑办公 个护化妆 礼品箱包 运动健康 母婴玩具 食品饮料 其他 /以下不属于表单内容 商城网站用户注册协议 本协议是您与商城网站(简称“本站”)所有者之间就商城网站服务等相关事宜所订立的契约,请您仔细阅读本注册协议,您点击“同意以下协议,提交”按钮后,本协议即构成对双方有约束力的法律文件。5.3.9 CookieCookie可保留在客户端,与Seesion不同的是它不会随浏览器关闭而失效,而是在Cookie的生命期内一直有效。创建Cookie/创建一个Cookie对象保存用户名信息Cookie cUserName = new Cookie(sudaUserName,userName);/设置Cookie的生命周期cUserName.setMaxAge(24*3600);/向客户端增加Cookie对象response.addCookie(cUserName);使用Cookie/获取本站在客户端上保留的所有Cookie,用于获取cookie中是否保存过用户名和密码信息 Cookie cookies = request.getCookies(); Boolean hasUserNameCookie = false; Boolean hasUserPassCookie = false; /遍历客户端上的每个Cookie,如果已经存在用户名的cookie,那么不再新增Cookie,如果没有,则新增一个Cookie for(Cookie c : cookies) if(c.getName().equals(sudaUserName) hasUserNameCookie = true; else if(c.getName().equals(sudaUserPass) hasUserPassCookie = true; if(hasUserNameCookie & hasUserPassCookie) break; /如果没有用户名Cookie,则新增一个用户名Cookie if(!hasUserNameCookie) /创建一个Cookie对象保存用户名信息 Cookie cUserName = new Cookie(sudaUserName,userName); /设置Cookie的生命周期 cUserName.setMaxAge(24*3600); /向客户端增加Cookie对象 response.addCookie(cUserName); /如果没有用户密码Cookie,则新增一个用户密码Cookie if(!hasUserPassCookie) /创建一个Cookie对象保存用户密码信息 Cookie cUserPass = new Cookie(sudaUserPass,userPass); /设置Cookie的生命周期 cUserPass.setMaxAge(24*3600); /向客户端增加Cookie对象 response.addCookie(cUserPass); 5.3.10 Servlet创建Servlet只需两步:创建jsp页面或Servlet的java类web.xml文件配置Servlet下面对两种方式的Servlet进行详细介绍:Java开发的Servlet Servlet的开发import java.io.PrintStream;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/Servlet必须继承HttpServlet类,jsp中的内置对象Servlet都必须由程序显示创建public class FirstServlet extends HttpServlet public void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,java.io.IOException /设置解码方式 request.setCharacterEncoding(UTF-8); /获取userName的请求参数值 String userName = request.getParameter(userName); /获取页面输出流 PrintStream out = new PrintStream(response.getOutputStream(); /输出:,其中是的转义字符 out.println(); out.println(); out.println(); out.println(); out.println(一个Servlet实例); out.println(); out.println(); out.println(); out.println(客户输入的用户名为:+userName); out.println(); out.println(); Servlet的配置在web.xml中 firstServlet servlet.FirstServlet firstServlet /firstServletPath 注意访问路径的url为站点url+FirstServlet.java对应的包名转成的路径+ “/firstServletPath”。Jsp对应的Servlet jsp的开发(略) 对应Servlet的配置由于jsp页面实质上也是一个Servlet,因此也可以对jsp页面进行Servlet配置。 indexConfig /index.jsp name 张三 age 28 indexConfig /indexConfigPath1 注意访问路径不再是jsp的url,而应以“/indexConfigPath1”取代url中“/index.jsp”部分。否则无法获取到对应的参数值。访问Servlet的配置参数通过config对象的getInitParameter(“paramName”)方法获取Servlet中的配置参数。无论是java对应的Servlet还是jsp对应的Servlet,都可以在web.xml中为此配置配置参数。方法都相同,即在对中设置: paramName paramValue 实例参见上一小节中Jsp对应的Servlet配置Servlet的生命周期i. 创建Servlet实例创建Servlet实例通常有两个时机:用户第一次请求某个Servlet时或Web应用启动时(后者为load-on-startup Servlet。这种Servlet在web.xml中配置时在对中除了设定、之外,还要多设置一个1)ii. Servlet初始化Web容器调用Servlet的init方法,对其进行初始化iii. 响应客户请求Servlet初始化后一直存在于Web容器中,用于响应客户请求。如果客户端发送GET请求,容器调用Servlet的doGet方法响应请求,如果客户端发送POST请求,容器调用Servlet的doPost方法响应请求,或者统一调用service()方法响应用户请求。iv. 销毁ServletWeb容器决定销毁Servlet时,先调用Servlet的destroy方法,通常在关闭web应用之时销毁Servlet。v.5.3.11 JSP2自定义标签开发自定义标签处理类 继承javax.servlet.jsp.tagext.SimpleTagSupport类 如果包含属性,每个属性都有对应的getter和setter方法 重写doTag()方法,这个方法负责生成页面内容建立一个*.tld文件,每个*.tld文件对应一个标签库,每个标签库对应多个标签在jsp文件中使用自定义标签应用实例迭代标签(即实现循环)创建自定义标签处理类package taglib;import java.io.IOException;import java.util.Collection;import javax.servlet.jsp.JspException;import javax.servlet.jsp.tagext.SimpleTagSupport;public class IteratorTag extends SimpleTagSupport /标签属性,用于指定需要被迭代的集合 private String collection; /标签属性,指定迭代集合元素,为集合元素指定的名称 private String item; public String getCollection() return collection; public void setCollection(String collection) this.collection = collection; public String getItem() return item; public void setItem(String item) this.item = item; /标签的处理方法,简单标签处理类只需要重写doTag方法 public void doTag() throws JspException,IOException /从page scope中获取属性名为collection的集合 Collection itemList = (Collection)getJspContext().getAttribute(collection); /遍历集合 for(Object s : itemList) /将集合的元素设置到page范围 getJspContext().setAttribute(item, s); /输出标签体 getJspBody().invoke(null); mytaglib.tld文件 6 mytaglib /mytaglib iterator taglib.IteratorTag scriptless collection true true attribute
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑环境 > 建筑工程


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!