JAVA WEB(sevrlet jsp)笔记
更新时间:2023-09-11 06:36:01 阅读量: 教育文库 文档下载
- java推荐度:
- 相关推荐
JAVA WEB笔记
笔者:张强
1、Servlet
Servlet预备 C/S结构与B/S结构
? 看金山词霸c/s ? 再Google翻译b/s
Web应用架构
页面显示逻辑控制业务逻辑控制数据库操作数据库Web应用架构与Java EE规范
JSPServletJavaBeanJDBCDB
Web应用架构与Java EE规范高级
JSFJavaBeanEJB(SessionBean)PersistenceDBWeb应用架构与民间解决方案
StrutsAction(Struts)SpringHibernateDBWeb工程的结构
要使用servlet,建工程的时候要选中webproject工程
web工程的特点
1)文件结构,多了一个webroot文件夹,与网页有关的文件都放在webroot下
2)在webroot下有一个web-inf的文件,运行web工程都要从这里开始加载
Tomcat的部署
tomcat是一个servlet的容器
1)修改端口:
找到tomcat conf下的server.xml文件 修改连接端口8080
在Server.xml中找到默认的8080端口,修改(如例子:改为8088) 为什么要改,因为Oracle已经占用了8080端口
2)配置JAVA_HOME环境变量 (必须配置)
如果有了就不用配了
并且值为如:C:\\Program Files\\Java\\jdk1.6.0_10 注意:后面不能带\\bin 将其添加到path
方法:%JAVA_HOME%\\bin; 测试:在dos下使用java命令
3)配置CATALINA_HOME
值为如:C:\\apache-tomcat-6.0.20 添加到path 方法:êTALINA_HOME%\\bin;
测试:在dos下打开tomcat使用startup.bat命令 关闭使用shutdown.bat命令
4)启动tomcat
部署好以后就可以启动tomcat,验证是否配置成功
启动方式一:找到tomcat的bin目录下的startup.bat文件,双击运行
启动方式二:在dos下输入命令startup.bat 启动成功后出现如下界面
不要关掉这个哦。这个就是tomcat服务器了
然后在IE或其它浏览器中输入访问地址 如:
http://localhost:8088 出现界面
5)添加tomcat到myeclipse
到preperences中找到
然后在tomcat下选择合适的版本
如下图
修改默认JDK (如:改为我们使用的1.6版JDK)
修改
部署好以后就可以启动tomcat,验证是否配置成功
6)修改虚拟目录(也就是tomcat的默认访问工程)
注意:根据需要修改
Context 标签 一定要在 host标签中 在server.xml文件中找到类似下面的文字
在其后添加如下代码: 修改之后如下: Web工程的部署 呼出tomcat界面 右击tomcat服务器,选择红色框中的选项,添加工程 选择需要添加的工程 选择红框中的选项,开启tomcat服务器 Servlet的编写与配置 编写servlet代码 步骤一:新建java文件名为:TestServlet 注意:要像称为servlet类,要继承HttpServlet public class TestServlet extends HttpServlet { } private static final long serialVersionUID = 1L; @Override protected void doGet(HttpServletRequest req, HttpServletResponse } @Override protected void doPost(HttpServletRequest req, HttpServletResponse } @Override protected void service(HttpServletRequest arg0, HttpServletResponse } @Override public void destroy() { } @Override public void init() throws ServletException { } System.out.println(\我是init...\); System.out.println(\我是destroy....\); throws ServletException, IOException { throws ServletException, IOException { throws ServletException, IOException { resp) System.out.println(\我是doGet...\); this.doPost(req, resp); resp) System.out.println(\我是doPost...\); 设置数据的编码 resp.setCharacterEncoding(\); 通过流在网页打印 PrintWriter pw = resp.getWriter(); pw.println(\你好,我是从servlet来的哦!\); pw.flush(); pw.close(); // // arg1) System.out.println(\我是Service...\); super.service(arg0, arg1); 代码说明: 1) 在servlet中必须有doget、dopost方法 2) 访问servlet的时候先调用init()方法(注:只调用一次),在调用Service()进行对doget、 dopost的控制访问 3) 调用doget() 步骤二:配置servlet 如果要运行servlet代码就要配置webinf下的web.xml 配置如下 http://ipaddress:port/projectname/url-pattern(即上面配的url) 2、Jsp JSP(全称Java server page)是一种网页脚本,可以嵌入Java语言,也包含有一些独特的语法,但最终都被编译成Java类。 Jsp由一个定制的标签和相关的Java语法构成。 JSP的访问,是要将JSP网页放到服务器后才能访问 Jsp网页的工作原理 服务器端怎样动态创建网页 新建Jsp 方法一: 可以手动创建JSP页面,其它格式类似HTML页面的创建,后缀名改为 .jsp 不同点:在标签前面,即文档的最前面添加代码,如下 <%@ page language=\import=\pageEncoding=\%> 典型的JSP页面结构如下: <%@ page language=\import=\pageEncoding=\%> 了解JSP指令 新建JSP ? <%! %>的声明部分。 ? 这里申明的变量,将成为Jsp生成的对应的Servelts类的成员变量 ? 这里申明的函数,将成为Jsp生成的对应的Servlet类的成员函数 <%--变量,函数的声明。这个注释客户端不能看见 --%> <%! int chinaarea = 96000000; int fun(int a,int b){ int sum = a + b; return sum; } %> <% …%> 的中间部分 这里的代码会在Jsp页面显示的同时被执行,如同写在main函数里的代码一样。 b=<%=b %> <%@...%> 处理指令 <%@ page [ language=\ [ extends=\ [ import=\ [ session=\ [ buffer=\ [ autoFlush=\ [ isThreadSafe=\ [ info=\ [ errorPage=\ [ contentType=\ \ [ isErrorPage=\ %> 为jsp提供处理.jsp文件所需的信息 处理指令必须位于jsp文件的首行。(不要将处理指令置于<%@ include%>指令包括的文件内),并且必须在符号@和关键字之间加入空格。 <%@ page language=\<%@ include file =\ %> Import 如果程序中已经有了import 那么在后面直接添加包名 Errorpage and iserrorpage JSP标签指令 注释对JSP标签指令没用 页面跳转 3、JSP与Servlet之间的操作 JSP与servlet数据传输 从JSP到servlet 注:主要是通过request这个对象传递数据, 主要是通过表单提交到后台(servlet) 在后台接收数据如下 在servlet中接收数据是用request的getParameter方法 String userName = request.getParameter(\); String userPassword = request.getParameter(\); System.out.println(userName + \ + userPassword); 从servlet到JSP 从servlet发送数据,同样也是通过request这个对象 如下:从servlet发送数据到JSP 代码说明:发回JSP是用setAttribute()方法放入数据;而想回到页面,则使用RequestDispatcher对象 request.setAttribute(\, userName); request.setAttribute(\, userPassword); rd = request.getRequestDispatcher(\); rd.forward(request, response); 在JSP页面接收数据 JSP隐含对象 生命周期 Request Request对象只能用一次,当继续给其它servlet时,request将为null Session 浏览器关闭,session不会马上销毁 通过下面代码得到session HttpSession session = request.getSession(); Session是当前用户都能用,只要当前用户没有关闭浏览器 注意:session有自己的生命周期,一般是30分钟 Application 通过以下代码得到application HttpSession session = request.getSession();//先得到session ServletContext application = session.getServletContext();//在得到application 这个是在整个工程中存在 只要这个工程一直运行,那么application都一直存在 当工程关闭时,application随之结束 指定变量的session或application作用范围 Session作用范围变量对单个用户请求的JSP应用程序的所有网页都可用,而application作用范围变量对任何用户请求的JAP应用程序的所有网页都可用。 Session: 适合用于存储单个用户的信息,例如:首选项、用户名或标识。 在session中存两个新变量 <% session.setAttribute(“FirstName”,”Jeff”); session.setAttribute(“LastName”,”Smith”); %> 从session中取信息 hi ,<% session.getAttribute(“FirstName”);%>
Application:
适用于存储特定应用程序所有用户的信息,例如:应用程序需要的特定欢迎词或常规值。
过滤器
作用:在做某项事务之前,如果要对一定的条件进行处理,然后再进入访问路径 过滤器是要实现Filter接口
代码编写
如下:
代码说明:有三个我们要了解的方法 Init():是在过滤器启动时调用的 Destroy():在过滤器销毁时调用
Dofilter():是要我们自己进行编写处理逻辑的 } public void init(FilterConfig arg0) throws ServletException { } System.out.println(\过滤器启动。。。\); public void destroy() { } public void doFilter(ServletRequest arg0, ServletResponse arg1, } FilterChain arg2) throws IOException, ServletException { String userName = arg0.getParameter(\); if(userName.equals(\)){ System.out.println(\欢迎你\+userName); arg2.doFilter(arg0, arg1);//释放访问路径 System.out.println(\不欢迎你\); System.out.println(\过滤器销毁。。。\); 如 1、处理编码 2、对特定事务的过滤 如下例子
调用最后要使用 FilterChain的doFilter()方法跳转到相应的访问路径 public class FilterServlet implements Filter { }else{ }
过滤器的配置
过滤器也是一个servlet,所以也要是web-inf中的web.xml中进行配置 如下:
监听器
作用:1、对不同的内置对象的生成与消亡进行监听(application session等);
2、对对象属性的生成、删除、修改进行监听
Application监听器
监听器代码的编写
编写application是要实现ServletContextListener这个接口
public class ApplicationListener implements ServletContextListener { } @Override public void contextInitialized(ServletContextEvent arg0) { System.out.println(\监听器生成。。。\); } @Override public void contextDestroyed(ServletContextEvent arg0) { System.out.println(\监听器销毁。。。\); }
监听器的配置
同样application监听器也作为一个servlet进行配置 直接配置class的路径
ApplicationAttribute监听器
监听器代码的编写
要实现接口ServletContextAttributeListener
public class ApplicationAttributeListener implements ServletContextAttributeListener { } @Override public void attributeReplaced(ServletContextAttributeEvent arg0) { } System.out.println(\修改Application属性域。。。\); @Override public void attributeRemoved(ServletContextAttributeEvent arg0) { } System.out.println(\删除Application属性域。。。\); @Override public void attributeAdded(ServletContextAttributeEvent arg0) { } System.out.println(\添加Application属性域。。。\);
static synchronized public DBConnectionManager getInstance()//如果唯一的//实例instance已经创建,直接返回这个实例;否则,调用私有构造函数,创//建连接池管理类的唯一实例
private DBConnectionManager()//私有构造函数,在其中调用初始化函数init() public void freeConnection(String name, Connection con)// 释放一个连接,//name是一个连接池对象的名字
public Connection getConnection(String name)//从名字为name的连接池对象//中得到一个连接
public Connection getConnection(String name, long time)//从名字为name //的连接池对象中取得一个连接,time是等待时间 public synchronized void release()//释放所有资源
private void createPools(Properties props)//根据属性文件提供的信息,创建//一个或多个连接池
private void init()//初始化连接池管理类的唯一实例,由私有构造函数调用 private void loadDrivers(Properties props)//装载数据库驱动程序 }
3、连接池使用
上面所实现的连接池在程序开发时如何应用到系统中呢?下面以Servlet为例说明连接池的使用。
Servlet的生命周期是:在开始建立servlet时,调用其初始化(init)方法。之后每个用户请求都导致一个调用前面建立的实例的service方法的线程。最后,当服务器决定卸载一个servlet时,它首先调用该servlet的 destroy方法。
根据servlet的特点,我们可以在初始化函数中生成连接池管理类的唯一实例(其中包括创建一个或多个连接池)。如:
public void init() throws ServletException {
connMgr = DBConnectionManager.getInstance(); }
然后就可以在service方法中通过连接池名称使用连接池,执行数据库操作。最后在destroy方法中释放占用的系统资源,如: public void destroy() {
connMgr.release(); super.destroy(); }
结束语
在使用JDBC进行与数据库有关的应用开发中,数据库连接的管理是一个难点。很多时候,连接的混乱管理所造成的系统资源开销过大成为制约大型企业级应用效率
的瓶颈。对于众多用户访问的Web应用,采用数据库连接技术的系统在效率和稳定性上比采用传统的其他方式的系统要好很多。本文阐述了使用JDBC访问数据库的技术?讨论了基于连接池技术的数据库连接管理的关键问题并给出了一个实现模型。文章所给出的是连接池管理程序的一种基本模式,为提高系统的整体性能,在此基础上还可以进行很多有意义的扩展。
http://www.webdevelopersjournal.com/columns/connection_pool.html http://www.webdevelopersjournal.com/columns/DBConnectionManager.java
操作步骤
作用:为了让我们连接数据库的连接信息不写死,所以把连接信息放到xml配置文件中
步骤一:
找到C:\\apache-tomcat-6.0.14\\conf\\context.xml 也就是tomcat下conf下的context.xml文件 在下面添加节点信息 【保存】 如下: username 为登陆数据库用户名 password为登陆数据密码 步骤二: 在工程的web-inf下的web.xml中配置连接池信息 注意: 步骤三: 编写连接池的servlet 新建java文件LinkPool.java public class LinkPool extends HttpServlet{ @Override protected void doPost(HttpServletRequest req, HttpServletResponse } throws ServletException, IOException { InitialContext ic = new InitialContext(); DataSource ds = ds.getConnection(); System.out.println(\我连接数据了\); // TODO Auto-generated catch block e.printStackTrace(); // TODO Auto-generated catch block e.printStackTrace(); @Override protected void doGet(HttpServletRequest req, HttpServletResponse } throws ServletException, IOException { resp) // TODO Auto-generated method stub this.doPost(req, resp); resp) try { (DataSource)ic.lookup(\); } catch (NamingException e) { } catch (SQLException e) { } } 配置连接池servlet 关于路径(连接数据库) /** * 解析data_con.xml配置文件 获得数据库连接信息 * * @throws Exception */ public ConnectionManager() throws Exception { /** * 下面方法是得到运行的路径 * 1、当从后台运行时,它的路径为workspace中工程的路径 * 如:/E:/workspace/webdatabase/WebRoot/WEB-INF/classes/ * 2、当从浏览器访问时,它的路径为tomcat的class路径 * 如:/C:/apache-tomcat-6.0.20/webapps/webdatabase/WEB-INF/classes/ */ = String path Thread.currentThread().getContextClassLoader().getResource(\ System.out.println(path); // 读取连接数据库的配置文件信息 //XmlManager xm = new XmlManager(\ XmlManager xm = new XmlManager(path+\
正在阅读:
在购买儿童提高免疫力保健品时要注意什么04-10
二年级下 语文按课文内容填空03-18
电子商务调查问卷08-18
2014.11月中英合作商务综合总复习资料(自考)12-08
脉诊习题01-22
南京大屠杀小学作文06-15
Bruker公司ALPHA中文说明书05-08
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- sevrlet
- 笔记
- JAVA
- WEB
- jsp
- 安全文明工地评审办法烟建质安8号
- 中华人民共和国环境保护法(全文)
- 2018-2019学年山东省菏泽市鄄城县第一中学高一下学期第一次月考物理试题(1-6班)
- 仪器分析模拟题
- 工会年度工作总结2014-11最新
- 施工安全管理体系及安全保证措施5463637
- 化工原理课程设计(苯-氯苯分离精馏塔 - 浮阀塔设计)
- 大学物理重要习题及其解答
- 七年级数学第一学期期末测试卷九
- 新人教版小学二年级下册《品德与生活》全册教案
- 新石器时代玉器欣赏 - 图文
- 《面向对象程序设计》上机编程题 附答案(修)
- 2016.12崇明高三政治期末试卷(等级)及答案
- 2015-2016学年度苏科版八年级数学下册第七章数据的收集整理描述单元测试题及答案
- 关于利息税盾作用的思考
- 透视学教学大纲
- 动物实验心得体会参考
- 写给逝去的孩子
- 行为金融学考试小抄及试题答案 - 图文
- 工业仪表自动化的校验与智能管理-最新年精选文档