什么是servlet?
Servlet (server applet)服务器小程序,是服务器的一个组件。是前后台交互必不可少的一个技术。
servlet是一个接口。
servlet和tomcat的关系?
servlet是tomcat实现的一个程序,用于前后台交互
dynamic web module version 2.5与3.0的主要区别
入门案例
创建一个class继承HttpServlet,HttpServlet 继承 GenericServlet 实现了 Servlet接口
重写doGet和doPost方法
public class HelloServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("get方法执行了");
super.doGet(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("post方法执行了");
super.doPost(req, resp);
}
}
配置web.xml文件(新建servlet的话就不用了自己配置web.xml,案例的servlet是我们自己继承而来的)
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.yang.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
创建一个简单的表单html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="/day11/hello" method="post">
<input type="submit" value="提交" />
</form>
</body>
</html>
右键run on server
点击提交
这里测试的是post方法,如果想要测试get方法的话,修改表单的提交方式即可
访问servlet的流程
升级案例
用户登录
先上表单吧
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="/day11/login" method="get">
用户名:<input type="text" name="username"><br/>
密码:<input type="password" name="password"><br/>
<input type="submit" value="提交" />
</form>
</body>
</html>
使用c3p0数据库连接池连接数据库
public class LoginServlet extends HttpServlet {
public LoginServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
String sql="select * from user where username=? and password=?";
Object[] params = {username,password};
QueryRunner qr = new QueryRunner(C3p0Utils.getDataSource());
User user = null;
try {
user = qr.query(sql, new BeanHandler<User>(User.class),params);
} catch (SQLException e) {
e.printStackTrace();
}
if (user!=null) {
System.out.println("登录成功!");
}else {
System.out.println("用户名或密码错误!");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
web.xml部分
<servlet>
<description></description>
<display-name>LoginServlet</display-name>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.yang.servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
注意url-pattern标签里的/login是from表单里的路径,如果用新建servlet,默认生成的servlet的url-pattern可能并不是你想要的访问路径,这时候发布项目点击会提交会出现没有反应的情况,属于访问路径有问题,from表单里的路径一定要和url-pattern里的相对应
servlet的作用
1、接收客户端发送过来的请求
2、调用业务层进行业务处理
3、将结果响应给浏览器
创建一个servlet的三个步骤:继承、重写、在web.xml中配置servlet
浏览器和服务器是如何通信的?
浏览器向服务器发送请求
服务器对请求进行处理,看看能否找到对应的资源,找到或者没找到
服务器将结果发送给浏览器
浏览器对结果进行解析
什么是静态资源?什么是动态资源?
静态资源是指客户端请求服务器,服务器从内存取到的相应资源(而不用请求数据库)如html、css、js、图片视频等
动态资源是指客户端请求服务器,服务器把请求交给web容器,web容器连接数据库,数据库处理完数据后交给web服务器。服务器返回给客户端解析渲染(也就是说动态资源是需要服务器连接数据库拿到的资源)
BS架构和CS架构的区别
BS架构不用安装软件,节约空间,减少使用成本,但是效果和安全性不如CS架构
CS架构需要安装客户端,服务器负荷较轻但维护麻烦,安全性高,效果好
WEB-INF下的资源不能通过浏览器直接访问,因为WEB-INF下资源受保护
编写的项目代码发布到服务器后.java代码还存不存在?
不存在,发布到tomcat服务器后,在webapps文件夹下是发布的多个项目,每个项目都有一个以项目名命名的文件夹,文件夹内
WEB-INF下内容
如何获取页面提交过来的参数?
request.getParameter(“username”);
什么是URL?
URL是统一资源定位符的简称,是对互联网上资源位置的一种表示,互联网上的每个文件都有一个唯一的URL。
协议://域名:端口号/资源位置?参数=值