## 1.web项目基本结构(了解)
#### 1.1web项目结构演示 通过tomcat运行

2.通过统一的命令来使用 项目的创建 打包 编译 (开发 测试 部署)
3.统一的jar包管理 只需要写配置文件 从远程仓库自动下载
#### 2.1maven安装
 下载到本地仓库 需要等待一会(只有第一次需要等待)
安装好后 可以使用maven相关命令 对项目操作
 和 动态技术(通过程序语言的输出流输出页面)
##### 4.1静态技术
) HttpServlet
重写指定的方法 service(){ 当次服务处理的逻辑代码 }
配置请求路径(通过请求路径 触发当前servlet的service()方法运行)
“`java
package com.javasm;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/person")
public class PersonServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
/*servlet
* server applet
* 服务端特定服务的处理
*
**/
//req 请求相关的数据和参数
//resp 响应相关的输出和对象
System.out.println("person处理类运行了……");
//通过url触发代码…
MyPerson myPerson = new MyPerson();
myPerson.readBook();
PrintWriter writer = resp.getWriter();
writer.write("data info");
writer.close();
}
}
“`
#### 4.3实现servlet的三种写法(了解)
HttpServlet —-> GenericServlet —-> Servlet
service() 请求进入时 会默认触发的方法
简化使用方法:
继承HttpServlet 不使用请求分发成get/post等方法 直接重写service()方法
在service()方法中写服务的处理代码
“`java
package com.javasm;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/person")
public class PersonServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
/*servlet
* server applet
* 服务端特定服务的处理
*
**/
//req 请求相关的数据和参数
//resp 响应相关的输出和对象
System.out.println("person处理类运行了……");
//通过url触发代码…
MyPerson myPerson = new MyPerson();
myPerson.readBook();
PrintWriter writer = resp.getWriter();
writer.write("data info");
writer.close();
}
}
“`
#### 4.4servlet两种配置方式(了解)
注解
在类上直接配置请求地址
“`java
@WebServlet("/demo2")
public class ServletDemo2 extends GenericServlet {
“`
配置文件
“`xml
“`
#### 4.5servlet生命周期
1.服务器启动时 先准备路径和实例的对应关系(先不创建实例 懒加载)
2.当请求访问到时 先检查是否有示例对象 如果没有则创建实例 调用init方法
3.如果已经有实例 调用service()方法
4.服务器关闭时 销毁实例 调用destroy方法
5.如果配置了load-on-startup 则生命周期提前到服务器启动时创建实例
## 5.servlet接收请求 返回响应

public class LoginServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("login服务触发了….");
//tomcat已经解析过请求报文
//给tomcat指定解析请求体的字符编码
//必须在读取第一个参数前设置 否则会失效
req.setCharacterEncoding("utf-8");
String username = req.getParameter("username");
String pwd = req.getParameter("pwd");
//tomcat 默认使用iso8859-1对字符编码
//System.out.println( new String(username.getBytes("iso-8859-1"),"utf-8") );
System.out.println(username);
System.out.println(pwd);
/*
* 查数据库 看数据对不对
* */
//给页面反馈
resp.setContentType("text/html;charset=utf-8");
PrintWriter writer = resp.getWriter();
writer.print(username+"
loginok…..
“);
writer.close();
writer.close();
}
}
“`
“`html
“`
## servelt常见错误:
1.servlet配置地址没带/
报错信息中有这条
“`java
servlet映射中的
“`
2.servlet请求地址配置重复了
报错信息中有这条
“`java
名为 [com.javasm.ServletDemo1]和 [com.javasm.ServletDemo2]
的servlet不能映射为一个url模式(url-pattern) [/demo1]
“`