Day29 Servlet一


WEB组件:jsp和servlet
jsp:动态网页
servlet:业务处理

Servlet

概述

Java编写,运行在服务器端,扩展服务器功能的web组件,servlet必须在servlet容器中运行

编写

Servlet接口
extends HttpServlet
重写doGet、doPost方法

访问

http://localhost:8080/web应用的上下文(网站名,虚拟路径)/资源名称

配置文件web.xml

在这里插入图片描述

注解

在这里插入图片描述

HttpServletRequest对象

1.请求行信息的方法
2.获取表单数据
request.getParameter(“name”);
表示请求对象,封装了客户端的数据
可以通过方法获取request对象的数据
3.设置属性相关的方法
setAttribute(String key,Object obj);
Object obj=getAttribute(String key);
removeAttribute(String key);

HttpServletResponse

响应对象
sendRedirect();响应页面

请求转发和重定向

1.sendRedirect,请求重定向,url显示响应页面的地址
request.getRequestDispatcher(“ok.jsp”).forward(request, response);请求转发,url不显示响应页面的地址
2.sendRedirect会产生一对request、response,所有的request不能传值请求转发,服务器内部方法的调用,不会产生新的request、response对象,可以使用request传值
3.sendRedirect可以跨应用定向页面
请求转发只能在本应用内转发页面

请求和响应过程

request
	//请求头,请求行
	//getParameter();getParameters();
	//request.setAttribute();,getAttribute,removeAttribute
	request生命周期:一次请求响应
response
	提供大量的状态码
	4开头5开头是错误状态码
	200表示响应成功

在这里插入图片描述

练习

在这里插入图片描述

public class User implements Serializable{
	private static final long serialVersionUID = -6209045953435812848L;
	private int id;
	private String name;
	private String password;
	public User() {
		super();
		// TODO Auto-generated constructor stub
	}
	public User(int id, String name, String password) {
		super();
		this.id = id;
		this.name = name;
		this.password = password;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", password=" + password + "]";
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}
public class DBUtil {
	public static Connection getConn() throws Exception{
		//1.注册驱动
		/*DriverManager.registerDriver(new Driver());*/
		Class.forName("com.mysql.jdbc.Driver");
		//2.获取连接
		String url="jdbc:mysql://localhost:3306/db";
		String user="root";
		String password="root";
		Connection conn=DriverManager.getConnection(url,user,password);
		return conn;
	}
	public static void close(PreparedStatement pstmt,Connection conn) throws SQLException{

		if(pstmt!=null){
			pstmt.close();
		}
		if(conn!=null){
			conn.close();
		}
	}
}
public class UserDao {
	public void addUser(String name,String password) throws Exception{
		Connection conn=DBUtil.getConn();
		String sql="insert into user (name,password) values (?,?)";
		PreparedStatement pstmt=conn.prepareStatement(sql);
		pstmt.setString(1, name);
		pstmt.setString(2, password);
		pstmt.executeUpdate();
		DBUtil.close(pstmt, conn);
	}
	public User getUser(String name,String password) throws Exception{
		User user=null;
		Connection conn=DBUtil.getConn();
		String sql="select * from user where name=? and password=?";
		PreparedStatement pstmt=conn.prepareStatement(sql);
		pstmt.setString(1, name);
		pstmt.setString(2, password);
		ResultSet rs=pstmt.executeQuery();
		if(rs.next()){
			user=new User(rs.getInt(1),rs.getString(2),rs.getString(3));
		}
		DBUtil.close(pstmt, conn);
		return user;
	}
}
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public LoginServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//获取请求行的信息
		System.out.println(request.getRequestURL());
		System.out.println(request.getRequestURI());
		System.out.println(request.getProtocol());
		System.out.println(request.getMethod());
		
		//请求的头信息
		Enumeration<String> headerNames=request.getHeaderNames();
		//判断是否有元素
		while(headerNames.hasMoreElements()){
			//获取头信息
			String headerKey=headerNames.nextElement();
			String headValue=request.getHeader(headerKey);
			System.out.println(headerKey+":"+headValue);
		}
		//获取客户端的传递的数据
		String name=request.getParameter("name");
		String pw=request.getParameter("pw");
		System.out.println(name+","+pw);
	}
	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		try {UserDao ud=new UserDao();
		String name=request.getParameter("name");
		String pw=request.getParameter("pw");
			if(ud.getUser(name, pw)!=null){
				System.out.println(name);
				//重定向,表示响应ok.jsp时会创建一对request和response
				//response.sendRedirect("ok.jsp");
				//请求转发,可以使用request传值
				//使用request对象设置属性
				request.setAttribute("name", name);
				request.getRequestDispatcher("ok.jsp").forward(request, response);
			}else{
				response.sendRedirect("error.jsp");
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
@WebServlet("/RegisterServlet")
public class RegisterServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public RegisterServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String name=request.getParameter("name");
		String pw=request.getParameter("pw");
		System.out.println(name+","+pw);
		try {
			new UserDao().addUser(name, pw);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		response.sendRedirect("registerok.jsp");
	}
	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//处理post请求中文乱码
		request.setCharacterEncoding("utf-8");
		doGet(request, response);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值