读书笔记——轻量级 Java EE企业应用实战 李刚(4th Edition)

 

      P529

      Build Path —— Add Library 是往Eclipse项目里添加库/jar。

          

      其中用户库是可以自定义的,但是在复现P529过程中,创建User Library时,如果勾选了System Library(added to the boot class path):

                                                                   

      则会生成一个后带系统库(system library)字样的User Library,运行项目会出错。

                             

 

所以,不要勾选System Library(added to the boot class path)。

 

 

 

 

P19 Eclipse建立运行第一个最简单的Web程序

① 新建Dynamic Web Project,在项目的WebContent目录下,新建一个JSP文件,记住勾选Use JSP Template(默认选中)。

    本例取名为first.jsp,代码如下:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    My first WebDemo!
</body>
</html>

②  Tomcat上运行该项目,浏览器地址:

http://localhost:8080/projectName/jspName.jsp

projectName:项目名称

jspName.jsp:jsp文件名

本例的实际地址:

http://localhost:8080/firstWebDemo/first.jsp

结果:

 

注意:

① 一定要将jsp文件放对位置(WebContent下,而不是其子目录或者其他目录下),项目下的WebContent/WEB-INF目录下的文件为受保护文件,用浏览器地址(客户端)是无法访问的,只有服务端(如配置的action)可以访问。

② 有时莫名其妙就是报错,找不到文件,并不是URL路径或者上述步骤问题,如下(可以看到,浏览器和上面不同,是的,这是在另一台机器上复现时候的,用的Chrome)

解决:项目,服务器全部删除,重新Run as ——>....

 

 

另外,Eclipse下Dynamic Web Project目录结构:

 

其中,Java Resources内存放项目的java资源:

src存放用户自定义的java类

Libraries存放项目所需的Java库,为各种jar包

 

JavaScript Resources存放项目的javascript资源

//三个文件包各自作用?

 

build?

 

WebContent:

总的:

 

       要注意的是,此文件目录只是Eclipse为了明晰项目开发架构自定义的,并不是标准的web应用原始的文件目录,原始的web项目文件组织可以在Tomcat的webapps的示例中看到:

 

       而浏览器访问的是Tomcat发布的Web应用,只是从Eclipse的项目架构到标准的原始Web应用文件组织这一步由Eclipse完成了,其中,Eclipse将项目中的src目录下的所有资源放入新建的项目名/classes目录下(包括src下的各种配置文件),但是注意,Eclipse并不会主动把用户新增的jar(build path)放入WEB-INF/lib下,这也是经常会提到的,如果想要发布应用,则需要将用户库手动放入lib下的原因。

       这也解释了直接访问jsp资源时URL的路径中没有WebContent,如上面访问first.jsp时没有加WebContent这一层目录,因为发布的应用中没有这一层目录。为了便于对比,将Eclipse下的项目testStruts和Tomcat发布的app文件目录对比一下即可:

Eclipse:

 

Tomcat:

对比发现,Tomcat发布的apps有如下的文件组织:

        其中,classes文件夹即Eclipse的src文件夹,剩下的content,lib和web.xml仍然为Eclipse原有的的文件,注意到,JRE System Library即Java自带的运行库没有包含在项目中。另外,Eclipse中JRE System Library下方的Web App Libraries其实是WEB-INF/lib的副本,且会自动同步。但是为只读属性,没有权限修改。

 

 

 

 

2 使用Struts2 的Config Browser插件看struts2.xml配置的action映射关系

原料:下载的struts2-all的包步骤:将lib下的struts2-config-browser-plugin-版本号.jar复制黏贴进项目的WEB-INF的lib目录下(注意要使用同一版本的Struts的jar包)。

 

然后在服务器上运行项目,在浏览器地址栏输入地址:

http://ip:port/project/config-browser/actionNames.action

其中ip为本机ip,port为本项目在服务器上的发布端口,project为本项目名。如亲测的实例:

http://localhost:8080/jyh/config-browser/actionNames.action

结果如下:

注意,上图中有3个工作空间:

/config-browser

default

/

而不是两个工作空间,如改为第三个工作空间“/”时:

 

 

BTW,namespace是在struts.xml中“定义”的,注意看下面的配置语句:

配置的结果:

定义namespace为“/”, 并且空——“”就是default,或者不进行配置也是default,可以配置为任意名字(符合规范的)。

 

 

 

web.xml中

通过配置ContextLoaderListener监听器,使容器启动时,自动加载applicationContext配置,

因为它实现了ServletContextListener这个接口,容器启动时会自动执行它实现的方法。

<listener>
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

 

默认情况下,会加载WEB-INF/applicationContext.xml这个文件,我们可以通过配置contextConfigLocation参数改变配置文件的路径

 

<context-param>
     <param-name>contextConfigLocation</param-name>
     <param-value>WEB-INF/classes/applicationContext.xml</param-value>
</context-param>

以上配置均在web.xml文件的<web-app></web-app>区域

 

这样可以将applicationContext.xml放入src文件夹下(因为发布即Tomcat上run时,会将src文件全部放入WEB-INF/classes/目录下)。

注意一个项目中只有一个applicationContext.xml,多了会引起先后加载,覆盖等等问题。(被坑过?)

 

 

http://www.cnblogs.com/S-E-P/archive/2012/01/18/2325253.html

这篇写的很好,action中使用将property类型声明为interface类型,setter中传入的变量类型也是interface类型,Spring配置文件(applicationContext.xml)中的ref的bean id对应的类才给出实现(注意实现类不是直接写在ref后面的!!被坑惨),这样避免实际类改变时,采用硬耦合(代码嵌入)方式带来的重构工作量,可以直接在配置文件改就好了。并且action类的由于不管interface的具体指向(虽然代码中对其操作仍然当做实现类对象来操作),所以不用引用interface实现类对应的包,只用引入interface的包即可。编程也变成了“勉强接口编程”。

 

 

 

 

 

第2章 

P59

JSP 和 Servlet 是Java EE规范的两个基本成员。二者本质一样,最终都要编译成Servlet才能运行,JSP只是生成Servlet的草稿文件。

其实广义的Servlet即包含了JSP。

 

 

 

P.59

自己动手建立Web应用

在Tomcat的webapps目录下新建工程—Project

目录结构如下:

 

 

P726

设计模式:

一个场景,一个问题和一个解决方案之间的关系。

软件领域的设计模式:

处于特定环境下,经常的出现的某类软件开发问题,一种相对成熟的解决方案。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值