servlet笔记:
动态网页:
以数据库为基础,不是独立于服务器的网页文件。
Servlet是服务器的编程技术。
Servlet继承了javax.servlet.http.HttpServlet类
Servlet:需要web服务器调用何启动。
c/s:客服器和服务器的架构
服务器负荷轻,维护升级成本高
b/s:浏览器和服务器架构
服务器负荷重,维护升级成本底
b/s:工作原理:
浏览器-服务器-数据库
在浏览器你把请求发给服务器,在服务器内调用Dao类操纵数据库
浏览器通过URL访问服务器 Servlet是一种类
写Servlet步骤
1、创建类继承(extend javax.servlet.http.HtpServlet)
2、重写三个方法:

init()、Service(HttpServletRequest Request,HttpServletResponse Response)、destro()

代码如下:

Servlet零基础

生命周期:init()开始访问  、Service 执行、destro 关闭(销毁)

3、给Servlet配置一个URL地址,供浏览器访问Servlet用:

配置文件

打开WebRoot/WEB-INF/web.xml文件,添加<servlet>和<servlet-mapping>两个标签
<servlet>
<servlet-name>FirstServlet<servlet-name>
<servlet-class>com.xxx.servlet.web.servlet.FirstServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FirstServlet</servlet-name>
<url-pattern>/first</url-pattern><!-/first代表localhost:80/项目名称/first>
</servlet-mapping>

代码如下:

Servlet零基础

报错404:未找到资源

报错500:服务器内部错误

一个类被修改后要重新启动Tomcat发布。

4、修改response的编码方式,如:response.setCharacterEncoding("GBK");
    修改页面属性:response.setContentType("text/html");
5、从服务器返回数据到客服端用:response

     从服务器返回数据到客服端用:request

6、网页参数的接收与返回:(关键代码示例)
接收:HttpServletRequest request
String username = request.getParameter("name");
返回:HttpServletResponse response
PrintWriter out = response.getWriter();
out.print("接收到的名字:"+username+"<br>");
网页的编码集:
接收中文的处理:
req.setCharacterEncoding("UTF-8");(gbk也可以)
username = new String(username.getBytes("ISO-8859-1"),"UTF-8");

如下:

Servlet零基础

7、表单信息的提交与页面对表单信息的获取主要步骤:
1.新建一个jsp网页,绘制一个简单的用户登录表单。
2.新建一个servlet类,在service()方法中进行参数的获取(request)和返回显示(response).(注意该servlet类url地址的注册)
3.通过表单属性actoin提交输入信息到服务器,并转到所创建的servlet类。

如下:

Servlet零基础
4.servlet获取参数,并在网页中显示。
提交网页数据,遍历数据库,返回显示遍历判断结果:
1.新建jsp网页,servlet类。(参考上一个例子)
2.创建操作数据库的类(UserDao)(注意驱动,连接参数等的配置)
3.在UserDao中创建查询的方法。(用户名和密码作为条件,同时满足(and))
String sql = "select * from userInfor where userName = ? and userPassword = ? ";

如:

Servlet零基础
4.在servlet类中的service方法中获取网页数据。(方法参考上一个例子)
5.通过UserDao user = UserDao.getInstance();
Map<String,String> map = new HashMap<String, String>();
map.put(key,value);分别键入键值对数据(userName和userPassword)启用UserDao中的查询方法遍历数据库。
6.根据查询结果判断用户信息是否存在,在网页中显示判断结果。

请求转发--服务器内部跳转
HttpServletRseponse接口
1、request.getRequestDispatcher(“/转发的页面(相对路径)”).forward(request,response);
return ;
2“/”表示项目的根目录,不加表示在当前Servlet目录。
3、因为转发后还会执行下面的代码,所以然return来结束。
4、地址栏是Servlet的地址栏
请求重定向
1、response.sendRedirect("/项目名/转到的页面");
return;
2“/”表示项目的根目录,不加表示在当前Servlet目录。
3、因为转发后还会执行下面的代码,所以然return来结束。
4、地址栏是当前页面的地址栏

下面是重定向和转发代码:

Servlet零基础

作用域:
请求域(HttpServletRequest request):
作用范围,只在一次请求中有关。
四个方法:
void setAttribyute(String name,object obj)
Object getAttribute (String name)
void removeAttribute(String name)
会话域(HttpSession session)
HttpSession session = request.getSession()。
作用范围:该次会话期间有效。
Tomcat中session的有效时间为30分钟(可以修改)
<session-config>
<session-timeout>10</session-timeout>
</session-config>

Servlet零基础

使session无效的方法
session.invalid()执行后
session最大等待时间后
关闭浏览器后
关闭服务器后
只要浏览器和服务器没有配对的SessionID时候
浏览器与服务器的SessionID请求:


在会话开始时,服务器会自动分配一个空间(session对象),SessionID就在session对象里


送一次请求到服务器,服务器首先判断,该请求是否携带一个SessionID值
如果这次请求没有携带一个SessionID值,服务器就知道了,这是第一次来访问该服务器
浏览器与该服务器开始建立会话
服务器会在相应请求的同时,将产生一个SessionID,作为该次会话的标识
再把这个SessionID发给浏览器,浏览器就拥有一个SessionID了
当再次访问该服务器时,浏览器会携带那个SessionID,被传到服务器
服务器首先判断该请求是否携带一个SessionID值,此时有了,代表这不是一个新的会话的请求
如果浏览器两个请求之间的时间太长,超出服务器等待的时间,服务器会删除这个session对象
删除后,再次发送到该服务器,因为服务器里没有这个session对象了,就不能判断请求是否携带SessionID值
也就是说判断不出来,就认为这是一个新的会话开始,又会产生一个SessionID,作为这次新会话的标识
又把这个SessionID发给浏览器,浏览器就拥有一个新的SessionID了


javax.Servlet.ServletConfig接口
代码:
ServletConfig config = this.getServletConfig();
getInitParameter(name);
config.getServletName();
config.getInitParameterNames();
config.getServletContext();
需要配置文件:
在servlet类设置键值对象,如下:
<init-param>
    <param-name>shen</param-name>
    <param-value>shichuan</param-value>
   </init-param>

Servlet零基础
过滤器:继承javax.servlet.Filter接口
过滤器用途:
用户认证和权相关管理。
重写三个方法:
public void destroy()
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain arg2) throws IOException, ServletException 
public void init(FilterConfig arg0) throws ServletException

Servlet零基础
不管是servlet还是jsp都必须先经过过滤器
过滤器需要配置web.xml文件:
<filter>
<filter-name>Fileted</filter-name>
<filter-class>com.yy.YYServlet.web.Fileted</filter-class>
</filter>
<filter-mapping>
<filter-name>Fileted</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

Servlet零基础

上述内容如有错误,请及时指正

相关文章: