Servlet

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


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值