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.javapublic 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>