JavaWeb 初步
来源:互联网 发布:ubuntu怎么解压缩 编辑:程序博客网 时间:2024/05/22 03:44
1. Servlet快速入门
1.1. 编写servlet 类
入门:找Servlet所在包... 建立的工程必须web工程!! 自动导入javaee.jar类库!!
第一步: 创建普通java实现Servlet接口
第一种写法:
package cn.itcast.day01_tomcat.servlet;import java.io.IOException;import javax.servlet.Servlet;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;public class MyServlet1 implements Servlet{@Overridepublic void destroy() {// TODO Auto-generated method stub}@Overridepublic ServletConfig getServletConfig() {// TODO Auto-generated method stubreturn null;}@Overridepublic String getServletInfo() {// TODO Auto-generated method stubreturn null;}@Overridepublic void init(ServletConfig arg0) throws ServletException {// 表示 当前servlet对象被容器创建...该方法只执行一次.....System.out.println("hello ----init 初始化方法执行");}@Overridepublic void service(ServletRequest arg0, ServletResponse arg1)throws ServletException, IOException {// 浏览器请求一次 该方法就执行一次.....System.out.println("hello ----service 业务方法执行");}}
浏览器如何访问该servlet对象呢? http://localhost/day01_tomcat/
1: 该对象谁创建?
服务器端开发: 对象servlet组件由容器创建(tomcat)
2: 浏览器如何访问该资源?
当浏览器访问该资源的时候(http://localhost/day01_tomcat/),容器执行该对象创建 ...对应Init 方法就会执行,,,,
第二步:配置web.xml
web.xml 是当前工程的主配置文件 ,
容器根据web.xml文件中的相关标签配置,自动创建该对象,并执行相关方法!!
标签:<servlet> <servlet-mapping>
<!-- 配置标签告知容器当浏览器请求目标资源给予相关的配置让服务器加载该servlet对象 -->
<servlet>
<servlet-name>MyServlet1</servlet-name>
<!--类的全路径-->
<servlet-class>cn.itcast.day01_tomcat.servlet.MyServlet1</servlet-class>
</servlet>
<!-- mapping映射通过在地址栏输入虚拟路基来使得浏览器访问servlet资源,虚拟路径对应着servlet的资源-->
<servlet-mapping>
<servlet-name>MyServlet1</servlet-name>
<!--虚拟路径一定以斜杠(/)开头 -->
<url-pattern>/servlet1</url-pattern>
<!-- /servlet1表示浏览器访问servlet对应的虚拟路径-->
</servlet-mapping>
<servlet-class>cn.itcast.day01_tomcat.servlet.MyServlet1</servlet-class>
右键类名 选择 copy qualiedfied Name 即可!!,不要手写,容易出错!!!
Servlet接口
------ 实现类 GenericServlet ----- 子类 HttpServlet ---- 自定义Servlet 继承HttpServlet
第二种写法:
import java.io.IOException;import javax.servlet.GenericServlet;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;// GenericServlet 对象不包含 具有http协议 api 的 public class MyServlet2 extends GenericServlet{@Overridepublic void service(ServletRequest req, ServletResponse res)throws ServletException, IOException {// 编写业务即可与 获取客户端浏览器getMethodSystem.out.println("------servlet2 ----");// 浏览器访问服务器.... ServletRequest (该对象 接受 浏览器(客户端)发送请求参数 )// ServletResponse 服务器通过 该对象给予 客户端 响应数据 ..}}
第三种写法:
分析
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { HttpServletRequest request; HttpServletResponse response; try { request = (HttpServletRequest) req; response = (HttpServletResponse) res; } catch (ClassCastException e) { throw new ServletException("non-HTTP request or response"); } service(request, response); }
第三种写法实现:
package cn.itcast.day01_tomcat.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class MyServlet3 extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 浏览器的访问 请求方式... 7 种 get post service 方法 接受所有请求方式... // HttpServlet 类 重写GenericServlet 提供抽象service 方法 自定义了一个service方法 // 该方法里面 请求的方式 分类..根据浏览请求方式不同 调用不同的方法 // 自定义的 servlet 不用重写 service 直接重写 具体请求方式业务方法!! String value = req.getMethod(); System.out.println(value+"-----"); }}
第四种实现方法:为了划分请求方式
因为HttpServelt中的已经帮我们区分了从浏览器发起的不同请求
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String method = req.getMethod(); if (method.equals(METHOD_GET)) { long lastModified = getLastModified(req); if (lastModified == -1) { // servlet doesn't support if-modified-since, no reason // to go through further expensive logic doGet(req, resp); } else { long ifModifiedSince = req.getDateHeader(HEADER_IFMODSINCE); if (ifModifiedSince < (lastModified / 1000 * 1000)) { // If the servlet mod time is later, call doGet() // Round down to the nearest second for a proper compare // A ifModifiedSince of -1 will always be less maybeSetLastModified(resp, lastModified); doGet(req, resp); } else { resp.setStatus(HttpServletResponse.SC_NOT_MODIFIED); } } } else if (method.equals(METHOD_HEAD)) { long lastModified = getLastModified(req); maybeSetLastModified(resp, lastModified); doHead(req, resp); } else if (method.equals(METHOD_POST)) { doPost(req, resp); } else if (method.equals(METHOD_PUT)) { doPut(req, resp); } else if (method.equals(METHOD_DELETE)) { doDelete(req, resp); } else if (method.equals(METHOD_OPTIONS)) { doOptions(req,resp); } else if (method.equals(METHOD_TRACE)) { doTrace(req,resp); } else { // // Note that this means NO servlet supports whatever // method was requested, anywhere on this server. // String errMsg = lStrings.getString("http.method_not_implemented"); Object[] errArgs = new Object[1]; errArgs[0] = method; errMsg = MessageFormat.format(errMsg, errArgs); resp.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED, errMsg); } }
package cn.itcast.day01_tomcat.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class MyServlet4 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 该方法执行 只接受get请求... System.out.println("----do get----"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 只接受Post请求... System.out.println("----do post----"); }}
第五种:相同的业务,代码冗余。
package cn.itcast.day01_tomcat.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class MyServlet5 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {doPost(req, resp);// get请求 业务方法由dopost执行}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {System.out.println("get---post");}}
第6种:用eclipse创建servlet,Name:Myservlet6
import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class MyServlet6 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doPost(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 开始进行servlet代码开发吧System.out.println("servlet 6 ---");}}
第7种:优化模板
2014版本:
C:\Users\Administrator\AppData\Local\MyEclipse Professional 2014\plugins
修改 com.genuitec.eclipse.wizards_11.5.0.me201310291746.jar
2010版本:
C:\Users\lili\AppData\Local\MyEclipse\Common\plugins
修改Servlet.java种的doGet和doPost方法
用工具生产Servlet代码,以及web.xml种的配置
- JavaWeb 初步
- Servlet的初步了解 --- JavaWeb
- 初步搭建javaWeb开发环境
- JavaWeb之数据库部分--JDBC初步
- JavaWeb前端之AJAX的初步学习
- JavaWeb 学习笔记 spring+jdbc整合开发初步
- JavaWeb JDBC初步连接和JDBC连接规范化
- javaweb学习笔记之关于分层结构的初步理解
- 【JavaWeb开发】初步实现网站应用钉钉扫码登录
- javaweb
- JavaWeb
- JavaWeb
- javaweb
- javaWeb
- JAVAweb
- 【JavaWeb】
- javaweb
- javaweb
- swift 快速奔跑的兔几 本节的内容是:用NSNotification发送通知
- 在eclipse上安装hadoop2.2.0插件
- JAVA中三种URL连接方法
- hdu 1711 拒绝模板,手搓+yy kmp,新的突破
- Xcode 7遇到 App Transport Security has blocked a cleartext HTTP 错误
- JavaWeb 初步
- Ubuntu Sublime install & plug-in
- java_笔记-8
- Django连接MySQL数据库
- springmvc原始入门(帮助理解springmvc流程)
- Java 泛型
- Local Reference and Global Reference
- linux设备模型bus总线
- 研三上学习计划