eclipse与j2ee

eclipse 运行时 tomcat是被载入

具体是在新建项目时被载入的

因此不需要自己开启tomcat

所以如果自己开启tomcat  端口就被占据了 eclipse就无法访问了

当然 eclipse如果一个程序占据端口 再开启其他程序也会导致无法访问



eclipse也可直接开启tomcat 然后再根据路径用浏览器就可以了


——————————————————————————————————————————

php是脚本 所以不需要编译 只要有服务器(解释php)然后直接用浏览器访问就可以了


但是java需要编译

 所以在不使用集成开发环境的情况下 

用命令行 javac xxxx.java生成  .class文件  

然后开启tomcat 将.class放到对应的 tomcat路径 如我的 /usr/lib/tomcat/webapps........

一般在 webapps目录下 继续建立  webapps->web应用名(如ch1)->WEB-INF->classes


xml文件(部署描述文件)放到WEB-INF 编译出的class文件放到classes里面


然后浏览器根据相应的路径访问就可以了

注意要根据xml里面的url-pattern 

<servlet-name>Chapter Servlet</servlet-name>

<url-pattern>/serv1 </url-pattern>


url http://localhost:8080/ch1/serv1

——————————————————————————————————————————

eclipse自己运行 tomcat的时候,8080端口对应的访问路径 也会编程workspace



servlet 和jsp虽然一个看上去像html一个像普通的java 但其实并不是

sevlet中如果直接输出 html会非常复杂并且出现相当多的问题

所以用jsp来存入html代码和和部分java代码         html中引入java(等同于php中的渲染模板)代码就是jsp

servlet中则是大部分java代码和部分html


容器(tomcat)接受请求会自己创建新的java线程

容器也是将jsp代码翻译成java的

也不需要去新建socket 监听之类,不需要担心服务器与servlet之间的api

只需在servlet里实现业务逻辑


1客户请求某servlet

2容器收到请求  建立HttpServletRequest HttpServletResponse请求和相应两个对象

3.找到servlet 分配一个线程,请求和相应对象分配给servlet

4.servlet根据请求不同 调用doGet 或 doPost

5.doGet 或 doPost生成动态页面 填入相应对象

6.进程结束 容器将相应对象转换成http相应 发回给客户,删除请求和相应对象



servlet可以有三个名字 1.客户知道的url名 (虚构的)

2.部署用

3.实际的文件名 取决于服务器的路径 包类..


在部署文件(xml文件)中会有具体的使用

<web-app>

<servlet>//内部映射

<servlet-name> aaa</servlet-name>   //<servlet-name> 是部署名 只在部署文件使用

<servlet-class> foo.servlet1 </servlet-class>类的完全限定名 但是不要加class foo是包

</servlet>

<servlet>

<servlet-name> bbb</servlet-name>   //<servlet-name> 是部署名 只在部署文件使用

<servlet-class> foo.servlet2 </servlet-class>类的完全限定名 但是不要加class foo是包

</servlet>


<servlet-mapping>//映射到公共

<servlet-name> aaa</servlet-name>   //<servlet-name> 是部署名 只在部署文件使用

<url-pattern>/test1</url-pattern>//客户看到的 虚拟名

</servlet-mapping>


<servlet-mapping>//映射到公共

<servlet-name> bbb</servlet-name>   //<servlet-name> 是部署名 只在部署文件使用

<url-pattern>/test2</url-pattern>//客户看到的 虚拟名

</servlet-mapping>

</web-app>


————————————————————————————————————



eclipse路径

1src里为 servlet(控制器)和 模型存放的地方,里面具体的的路径由包决定 而模型与控制器肯定是在不同包内的  model / web

2build里为 编译出的class文件 也同样按照上面的包路径决定具体路径

3.webcontent 里直接放jsp或html xml部署文件放在 web-inf里(固定的,必须的)


servlet(控制器 import model 例:import com.example.model.*;

然后在servlet里新建 某model里的类 然后调用模型类的方法

然后根据 (应用名/servlet别名)就可以映射到类文件

容器根据部署文件xml得到加载类 开始一个线程 将请求传递给servlet的service方法

————————————————————————————————————————————————————————————————————————————

服务器只创建每个servlet的单一实例,每个用户请求创建一个新的线程

首次创建servlet 会初始化init方法。

service方法:服务器每次接受对servlet请求创建一个新的线程,调用service方法,service方法检查http请求类型(get,post,put,delete等)相应的调用 doGet doPost等(其他不重要)方法。

servlet销毁:服务器绝定移除之前载入的servlet实例(管理员要求,长时间空闲)

移除servlet之前 调用destroy方法。


和php脚本不一样,servlet被创建之后是很多人使用。然后每个用户创建新线程。

如果新的请求到来,前面的还在执行就会并发发文。因此一些数据的同步要注意,局部变量则不需要。

implements SingleThreadModel这个接口 就会阻止多线程(不好)

处理多线程公共数据最好使用synchronized关键字


httpservlet的method手册,其他都和普通java差不多

还有一些服务器上的问题再具体查https://docs.oracle.com/javaee/7/api/toc.htm


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

HttpServletRequest继承了 public interface HttpServletRequest extends ServletRequest

所以HttpServletRequest有

//http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html

//http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html


接收请求的参数编码





案例代码 pdf 329

pdf352


localhost:8080   not found http://blog.sina.com.cn/s/blog_8020e41101014lvu.html


路径http://www.cnblogs.com/chinafine/archive/2010/06/13/1757514.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值