Servlet:一个运行在服务器端,用于处理用户请求并响应的java程序,所有请求使用的同一个Servlet对象昂,该对象由容器管理
,其中的方法由容器调用
i)是一个java程序
ii)运行在服务器端
iii)作用:处理请求并响应
2.Servlet 的结构
public class HelloSErvlet extends HttpServlet {
public void doGet(
HttpServletRequest request,HttpServletResponse response){
}
public void doPost(
HttpServletRequest request,HttpServletResponse response){
}
}
//在web.xml中对该类进行配置
<servlet>
<servlet-name> aaa</servlet-name>
<servlet-class>com.neu.servlet.HelloServlet</servlet-class>
</servlet>
<servlet -mapping>
<servlet-name> aaa</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
注意:
1.一个类要想成为servlet,必须继承自HttpServlet或其子类
2.必须重写doGet或doPost 处理 get或post
3.必须在web.xml文件中队该类进行配置 才可以访问
就是同过tomcat服务器那个 url对应的那个类
5.如果使用 idea 创建servlet: 因为idea 建议使用maven 创建 maven 创建 web项目,不建议直接创建web项目
a)创建web项目
b)给项目添加 tomcat 的类库 (jsp-api,servlet-api)
c)创建页面
d)创建 servlet
6.自己创建的 文件夹
com.neu.util 存放工具类 DButil ResourceUtil Base64Util
com.neu.dao 操作数据库的类 BaseDao
com.neu.dao.ipml 存放 BaseDao的子类,每张表一个
com.neu.servlet 存放 所有的servlet类 要求servlet 以servlet 为后缀 HeloServlet HttpServlet
com.neu.service ; 存放业务逻辑
7.修改servlet的模板 :idea使用注解 annotation时 仅仅帮我们添加了servlet的名称
而没有添加urlPatterns的配置
8.注解或 在 web.xml中配置 有什么意思,效果一样
web.xml中
<servlet> 通知 tomcat 服务器 哪个类 是 servlet 程序 ,以及别名
<servlet-mapping> 配置url 和servlet 类 关联 访问哪个地址(url)时 由,名为谁的servlet处理
使用 annotation 后
<serrvlet> 被@WebServlet 中的name 属性代替
<servlet-mapping> 被@WebServlet 中的urlPatterns 代替
9.创建 servlet
必须引入需要的jar文件 :添加tomc 类库
利用idea提供的模板 创建servlet
i)使用annotation,在类的上面 添加
@WebServlet(name = "", urlPatterns = {"/url"})
ii)必须在web.xml中配置
<servlet>
<servlet-name>aaa</servlet-name>
<servlet-class>com.neu.servlet.XXXServlet</servlet-class>
</servlet>
<servlet -mapping>
<servlet-name> aaa</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
10.通过访问表单中的action 进行访问
<form action="" method=""></form>
2.超链接访问
<a href="">ss</a>
13.经长遇到的问题
a)url-pattern 没有以/开头
b)不同的 servlet 使用了相同的url-pattern
c)404 请求的资源没有找到
i)查看请求的资源位置,url-pattern(urlPatterns)
ii)jsp、html相关的内容目前不能放在web-inf 下
14.请求的三种操作
a)使用form 表单 通过 action 指定位置
b)超链接 a 通过 href 指定位置
c)通过地址连直接输入
http://localhost:8888/aaa
15.doGet 和doPost 分别 处理那种访问方式
a)使用form 表单 通过 action 指定位置
method="get" get方法
method=“post” post方法
b)超链接 a 通过 href 指定位置
直接访问doGet方法
c)通过地址连直接输入
http://localhost:8888/aaa
总结: 不管是dopost 还是 doget都是从请求中获取数据,把结果响应给客户端 仅在一个方法中 添加即可
--------------------------------------------
1.Servlet :一个运行在服务器端 处理 用户请求并响应的java程序
a)继承自 HttpServlet 获取子类 重写 doGet 或者 doPost
b)需要配置 servlet
i) annotation(注解) 建议使用
@WebServlet("/url") 或者 @WebServlet(name=“”,urlPatterns={“/url”})
ii)在 web.xml中配置
<servlet>
<servlet-name> aaa</servlet-name>
<servlet-class>com.neu.servlet.HelloServlet</servlet-class>
</servlet>
<servlet -mapping>
<servlet-name> aaa</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
3.使用Servlet 如何获取请求的数据
获取单个控件的值,使用 HttpServletRequest
String getParameter(“控件的 name值”)
setCharacterEncoding("编码");只对post有效
4.获取客户提交的数据
获取控件的值 :是否可以同时提交多个值 除了checkbox 以外, 其他控件默认只能提交一个值,都可以使用 getParameter获取
checkbox 如何获取: String[] getParameterValues(“控件名称”);
5.获取和控件名和值组成的键值对;
Map<String,String[]> getParameterMap( )
必须手动 把该格式的Map集合 转换
如何遍历Map集合
for(Map.Entry<String,String[]> entry: Map.entrySet( )){//尽量用在注册,
entry.getKey( )
entry.getValue( )
}
完成注册
以前使用
String getparameter(“”)
String [] getParameterValues("")
为了减少 频繁的取值
Map<String,String[]> getParametMap();
5.把数据添加到数据库中
View---Controller---Model(实体Bean Map\Dao\service)
jsp---servlet ---javaBean
6. 代码简化;尽量避免重复性的工作;提取公共内容 多想 多思考;
7.如何实现页面的跳转把另一个页面呈现给用户
使用 HttpServletResponse 接口方法中的方法
sendRedirect(“页面”);
注意:一个请求,最终只能调转到一个页面;
执行完sendRedirect 方法后,其后的代码依然会只执行
重定向,重新请求一个资源,类似于 打电话
在客户端执行完成,发送两次请求
不能访问 web-inf 下面的内容
8.String 的== 与 equals区别
==比较的是内存地址
equals 比较的是值
9.完成管理员的操作
a)需要完成的任务
1)建表--css_manager_info
2)插入数据,因为在plsql中使用 inser语句操作,必须commit
3)创建页面;登录页面(用户名,密码)
4)从下往上: dao ----> service-----servlet(顺序)
i)dao 中需要哪些方法 dao继承自 GenerteSqlDao
查询 签名(方法的声明)
public List<Map<String,Object>> findByParam(Map<String,String> item){
}
ii)service 中创建登陆的方法
iii)
1.web程序发布后相关的内容自动添加到tomcat 服务器中的webapps下
a)相关的内容 指那些
web模块中的所有内容--自动产生一个名称 (默认的就是相目名),idea中 默认为 /
包含:
页面(html,css,js,jsp,img);
WEB-INF
lib 存放需要的jar文件
classes 存放 src下编译后的 class文件
web.xml:web 项目的部署描述
b)目录结构:
i)默认访问的是同目录下的资源,
在 mgr/show.jsp
在 show.jsp中如下代码
<a href="ShowServlet">aa</a>
ShowServlet 的urlPatterns 如下编写
@WEBServlet(name=“aa”,urlPatterns{ "/mgr/ShowServlet"})
iii)如何夸目录访问
idea tomact 的结构
2.创建servlet时 urlPtterns如何设置
原则,和访问的jsp页面在相同的目录下 列如 在user 目录下 有一个 users.jsp 的页面 那么在文件中访问的
所有 servlet urlPtterns={ “/user/xxx”} 这样在jsp中就可以直接访问 < a href="xxx">ddd</a>
------------
操作数据库 :
编写 sql语句
动态编写sql语句
i)页面控件的名称 必须与操作表中的列名相同
iii)如果控件的值不需要存放在数据库中,那么该控件一定没有name属性
iiii)一定要进行测试,保证无误 同时所有异常 一定要抛出
c)MVC 三层
c:Servlet 负责取数据和跳转
m:
service : 专门负责数据的处理的,
dao: 专门操作 数据库的
entity :实体层 ,用于存放数据的 java 对象,只有属性和setter,getter 方法
使用Map 代替 建议使用 HashMap 实现序列化接口
没一张表 对应一个dao 和一个 service
页面中的每一个功能对应
i)对应一个Servlet
ii)一个页面对应一个servlet 每一个功能对应一个servlet中的方法
4.如何在servlet 和jsp页面中传递数据
a)会话跟踪:
当客户端访问服务器时,服务器自动为该客户端创建一个链接(会话)
使用 HttpSession 的对象表示,可以存放用户的数据
一个浏览器对应一个会话,当前用户在所有页面中可以共享数据
我们只能通过以下方法获取 HttpSession session=request.GerSession();
如何存放数据
session.setAttribute("key",obj);//就是一个Map
Object obj=session.getAttribute ( "key");//建议在 servlet中使用该方法 取数据
HttpSession 仅仅在Servlet 和 jsp 中使用
b)在jsp中 也可以使用
<% Object obj=session.getAttribute("key");%>
建议要使用 脚本元素 我们的理想 页面无脚本 (没有 <%%>)
使用 ${ } EL 表达式 代替,作用就是从session 中获取 对应得数据
5.构建主页面 ,通常主页面都是有三部分组成 最上面 显示登陆人信息,有注销功能 mgr_top.jsp
左边是一个树形菜单 ,点击左边右边改变 mgr_left.jsp
右边是也个可以改变的部分 mgr_right.jsp 没有操作前显示内容 左侧每一个选项对应一个页面
6.美化页面,使用css样式
a)在标签内部使用 style 属性 设置相应的样式
style=“font-size:14px;color:red;width:150px;”
如果有同样样式,存在重复 内容
b)内部样式,在head标签内部 使用style 对样式集中 定义
在标签 内引入即可
css 必须写在head 内部,因为html 是解析执行 从上往下 逐行解析显示
7.css样式 :就是通过给属性赋值改变 控件的显示
a)定义位置:
在 head 标签中 使用style 标记 定义
<head>
<style>
</style>
</head>
b)语法 、
选择器名 : 就是对页面中对控件起作用的标记,选择对那些控件进行设置
{
属性名:值;
}
分类; 类选择器 以 . 开始,必须同过控件 的class 属性 进行调用
必须熟练使用 bootstrap 提供的class样式
标签选择器: 就是以标签名 命名 不需要引用
id选择器 ;必须 以 # 开头 只针对 id 同名的控件
#aa{
}
< div id="aa"> </div>
8、标识符无效,提供的列明不正确,去页面中修改控件的name属性值
对象名无效,提供的表名 不正确 ,去dao中修改,或者查询 编写的sql语句是否缺少 空格
序列名无效 序列名错误,在dao中修改
9.如果 jsp在显示的时候 需要显示数据库中的数据
必须先进入 Servlet 后 获取数据库中的数据 存放到Session中 后跳转到jsp中显示
jsp要显示 必须先进 Serclet 后进 jsp
10.js脚本:就是嵌入在 html 页面中可以实现某些功能的代码
a)如何编写 、
放在<script> 标签 内部的都是脚本;
建议写在页面的最后 body 的最后面
页面 servlet service(提供结果) dao