Servlet

Servlet

Servlet是一种独立于平台和服务器端的Java应用程序,可以生成动态的Web页面。Servlet是位于Web服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器(如Tomcat)必须包含支持Servlet的Java虚拟机。

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>web</display-name>
  <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>
  
  <servlet>
  	<servlet-name>myServlet</servlet-name>
  	<servlet-class>com.java.MyServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>myServlet</servlet-name>
  	<url-pattern>/myServlet</url-pattern>
  </servlet-mapping>
  
</web-app>

FriendServlet.java

package com.servlet;

import java.io.IOException;
import java.sql.SQLException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.catalina.connector.Request;

import com.dao.FriendDao;
import com.daoImpl.FriendDaoImpl;
import com.java.Friend;

public class FriendServlet extends HttpServlet{
	private static final long serialVersionUID = 9059392539067010198L;

	public FriendServlet() {
		
	}

	@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 {
		req.setCharacterEncoding("UTF-8");
		//操作区分
		String method = req.getParameter("method");
		if("findAll".equals(method)){
			findAll(req, resp);
		}else if("find".equals(method)){
			find(req, resp);
		}else if("add".equals(method)){
			add(req, resp);
		}else if("update".equals(method)){
			update(req, resp);
		}else if("delete".equals(method)){
			delete(req, resp);
		}
	}
	
	//----------------------自定义业务方法----------------------
	protected void add(HttpServletRequest req, HttpServletResponse resp)
	throws ServletException, IOException {
		FriendDao dao = new FriendDaoImpl();
		Friend f = new Friend(req.getParameter("name"), req.getParameter("signature"), req.getParameter("sex"));
		try {
			dao.add(f);
			resp.sendRedirect(req.getContextPath()+"/friendServlet?method=findAll");
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	protected void update(HttpServletRequest req, HttpServletResponse resp)
	throws ServletException, IOException {
		FriendDao dao = new FriendDaoImpl();
		Friend f = new Friend(Integer.parseInt(req.getParameter("id")),req.getParameter("name"), req.getParameter("signature"), req.getParameter("sex"));
		try {
			dao.update(f);
			resp.sendRedirect(req.getContextPath()+"/friendServlet?method=findAll");
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	protected void delete(HttpServletRequest req, HttpServletResponse resp)
	throws ServletException, IOException {
		FriendDao dao = new FriendDaoImpl();
		try {
			dao.delete(Integer.parseInt(req.getParameter("id")));
			resp.sendRedirect(req.getContextPath()+"/friendServlet?method=findAll");
		} catch (NumberFormatException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	protected void find(HttpServletRequest req, HttpServletResponse resp)
	throws ServletException, IOException {
		String id = req.getParameter("id");
		FriendDao dao = new FriendDaoImpl();
		try {
			Friend f = dao.findById(Integer.parseInt(id));
			req.setAttribute("friend", f);
			req.getRequestDispatcher("edit.jsp").forward(req, resp);
		} catch (NumberFormatException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	protected void findAll(HttpServletRequest req, HttpServletResponse resp)
	throws ServletException, IOException {
		FriendDao dao = new FriendDaoImpl();
		try {
			List<Friend> friendList = dao.findAll();
			req.setAttribute("friendList", friendList);
			req.getRequestDispatcher("list.jsp").forward(req, resp);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}

Model2实现CRUD

三层开发模式:JSP + Servlet + JavaBean


过滤器

MyFilter.java

/**
 * 自定义过滤器
 * @author GA
 */
public class MyFilter implements Filter{

	@Override
	public void init(FilterConfig arg0) throws ServletException {
		System.out.println("过滤器   init");
	}

	@Override
	public void doFilter(ServletRequest arg0, ServletResponse arg1,
			FilterChain arg2) throws IOException, ServletException {
		System.out.println("过滤器   dodododo");
		
		//执行过滤链的下一个过滤器,若没有下一过滤器,则执行目标对象
		arg2.doFilter(arg0, arg1);
	}

	@Override
	public void destroy() {
		System.out.println("过滤器   distory");
	}
}
MyServlet.java

public class MyServlet extends HttpServlet{

	public MyServlet() {
	}

	@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 {
		PrintWriter out = resp.getWriter();
		resp.setContentType("text/html; charset=UTF-8");
		
		//req.setCharacterEncoding("utf-8");
		
		String name = req.getParameter("name");
		System.out.println(name);
		
		out.write(name);
		
		out.write("________servlet_________");
	}	
}
Utf8Filter.java
public class Utf8Filter implements Filter {

    public Utf8Filter() {}

	public void destroy() {
	}

	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		
		request.setCharacterEncoding("utf-8");
		
		chain.doFilter(request, response);
	}

	public void init(FilterConfig fConfig) throws ServletException {
		System.out.println("utf8");
	}

}
web.xml

  <servlet>
    <servlet-name>myServlet</servlet-name>
    <servlet-class>com.java.MyServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>myServlet</servlet-name>
    <url-pattern>/myServlet</url-pattern>
  </servlet-mapping>
  
  
  <filter>
    <filter-name>utf8Filter</filter-name>
    <filter-class>com.java.Utf8Filter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>utf8Filter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  
  
  <filter>
    <filter-name>myFilter</filter-name>
    <filter-class>com.java.MyFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>myFilter</filter-name>
    <servlet-name>myServlet</servlet-name>
  </filter-mapping>

C3P0连接池组件

DBUtils.java   部分

//定义一个获取数据库连接的方法  
    public static Connection getConnection(){  
        Connection conn = null;  
        try {  
        	DataSource ds = new ComboPooledDataSource("dbInfo");
        	ds.getConnection();
            //conn = DriverManager.getConnection(URL,USERNAME,PASSWORD);  
        } catch (SQLException e) {  
            e.printStackTrace();  
            System.out.println("获取数据库连接失败");  
        }  
        return conn;  
    }  
c3p0-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>

	<named-config name="dbInfo">
		<!-- 配置用户名密码、连接、驱动 -->
		<property name="user">root</property>
		<property name="password">root</property>
		<property name="jdbcUrl">jdbc:mysql://localhost:3306/test</property>
		<property name="driverClass">com.mysql.jdbc.Driver</property>
		<!-- 数据库连接池一次向数据库服务器要多少个连接 -->
		<property name="acquireIncrement">5</property>
		<!-- 初始化连接数 -->
		<property name="initialPoolSize">10</property>
		<!-- 最小连接数 -->
		<property name="minPoolSize">5</property>
		<!-- 最大连接数 -->
		<property name="maxPoolSize">20</property>
	</named-config>

</c3p0-config>






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值