5-servlet简介

时间:2023-03-10 07:19:51
5-servlet简介

一。servlet
1.是什么:java程序来处理页面请求和响应
2.实现方式:
  a。实现Servlet接口
  b。继承HttpServlet类

3.步骤:
  a.创建一个java程序实现Servlet或者继承HttpServlet类
  b.修改web.xml文件

    <servlet>
      <!-- servlet名字,可以自定义 -->
      <servlet-name>firstServlet</servlet-name>
      <!-- 要执行的servlet程序的完整类名 -->
      <servlet-class>com.servlet.FirstServlet</servlet-class>
    </servlet>
    <servlet-mapping>
      <servlet-name>firstServlet</servlet-name>
      <!-- 访问该servlet的url路径。/表示根目录开始 -->
      <url-pattern>/first</url-pattern>
    </servlet-mapping>
  c.访问:http://localhost:8888/hwua_web/first

4.第二种方式:

  继承HttpServlet,重写里面的doget和doPost方法
    方法中的参数:req对应request resp对应response
    session的获取方式:HttpSession session = req.getSession();

5.第三种:继承HttpServlet,重写里面的doget和doPost方法
  在类上写一个注解:@WebServlet("/login3")//此注解代替web.xml的配置文件

实例1:实现 Servlet 接口 +  web.xml注册

  LoginServlet.java

 package com.control;

 import java.io.IOException;

 import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import com.pojo.UserInfo;
import com.service.IUserInfoService;
import com.service.UserInfoService; public class LoginServlet implements Servlet{
public void destroy() { }
public ServletConfig getServletConfig() {
return null;
}
public String getServletInfo() {
return null;
}
public void init(ServletConfig arg0) throws ServletException { }
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
HttpServletRequest req = (HttpServletRequest) arg0;
HttpServletResponse res = (HttpServletResponse) arg1;
//获取session
HttpSession session = req.getSession(); req.setCharacterEncoding("utf-8");
String username = req.getParameter("username");
String password = req.getParameter("password");
String isrember = req.getParameter("isremder");
IUserInfoService userSer = new UserInfoService();
UserInfo user = userSer.login(username, password);
if(user!=null){
session.setAttribute("user",user);
//登录成功,将用户名和密码保存到cookie中
if("1".equals(isrember)){//记住用户名
Cookie cookie = new Cookie("username",user.getUser_name());
cookie.setMaxAge(1000*3600*24*7);//设置cookie的有效期
res.addCookie(cookie);//将cookie添加到响应中发送给客户端
}
res.sendRedirect("cookie/success.jsp");
}else{
res.sendRedirect("cookie/login.jsp?error=true");
}
}
}

  web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>javaweb06</display-name>
<servlet>
<servlet-name>loginservlet</servlet-name>
<servlet-class>com.control.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>loginservlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>

  实例2:继承HttpServlet类 +  web.xml注册

  LoginServlet2.java

package com.control;

import java.io.IOException;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; public class LoginServlet2 extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req,resp);
} @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//session
HttpSession session = req.getSession();
//application
ServletContext app = getServletContext(); }
}

  web.xml文件同上,只不过将

<servlet-class>com.control.LoginServlet</servlet-class>

  改为
<servlet-class>com.control.LoginServlet2</servlet-class>

  实例3:继承HttpServlet类 + @WebServlet注解注册,不需要在web.xml文件中注册   
   LoginServlet3.java
package com.control;

import java.io.IOException;

import javax.servlet.ServletContext;
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 javax.servlet.http.HttpSession; @WebServlet("/login3")//此注解代替web.xml的配置文件
public class LoginServlet3 extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req,resp);
} @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//session
HttpSession session = req.getSession();
//application
ServletContext app = getServletContext(); }
}