Servelt
tomcat修改端口
srever.xml—>port=”9090”—>重启tomcat生效
当端口号为80时可以省略
package web;
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 java.io.IOException;
@WebServlet(urlPatterns = "/hello")
public class MyServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("hello kuang!");
resp.setContentType("text/html;charset=utf-8");
resp.getWriter().println("<html><body>你好,世界!</body></html>");
}
}
Servelt
作用:1>处理浏览器发送过来的请求 2>给浏览器返回响应
编写servlet
java类要继承HttpServlet
在servlet类上添加注解
```
@WebServlet(urlPattern="/servlet")
```
http://ip地址:8080/servlet路径?参数名=参数值
重写service方法
//1.处理请求
request.setCharacterEncoding("utf-8");
requesr.getParameter("参数名");
//2.返回响应
response.setContentType("text/html;charset=utf-8");
PrintWriter w = response.getWriter();
w.println("html代码")
@WebServlet(urlPatterns = "/s1","/s2")
public void service(HttpServletRequest req ,HttpServletResponse resp)throws ServletException IOException{
}
浏览器首次向servlet发送请求时,会创建他的实例,以后再发送请求时仍然是第一次创建的实例(单例)
servlet中的初始化方法init(),服务方法service(),销毁destory()
覆盖service方法,可以处理所有类型的请求
覆盖doGet方法,仅可以处理get请求
覆盖doPost方法,仅可以处理post请求
javaweb项目的目录结构
|-
|-WEB-INF()
|-classes 自己的class类
|-lib 第三方jar包
|-css 样式表
|-js 脚本
|-jsp 网页文件
|-index.jsp 首页面
例子:从数据库中,Student表里查找数据并输出到表格中
缺点:代码可维护性差,可读性差
package web;
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 java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
@WebServlet(urlPatterns = "/hello")
public class MyServlet extends HttpServlet {
@Override
public void init() throws ServletException {
System.out.println("初始化");
}
public MyServlet() {
System.out.println("构造方法");
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("hello kuang!");
resp.setContentType("text/html;charset=utf-8");
//resp.getWriter().println("<html><body>你好!匡民中!</body></html>");
PrintWriter out = resp.getWriter();
out.println("<html><body><table border='2px' >");
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/k1?serverTimezone=GMT%2B8&useSSL=false" +
"&useServerPrepStmts=true&cachePrepStmts=true&rewriteBatchedStatements=true" +
"&useCursorFetch=true&defaultFetchSize=100","root","kuang");
PreparedStatement stmt = conn.prepareStatement("select * from student");
ResultSet rs = stmt.executeQuery();
while(rs.next()){
out.println("<tr>");
int id = rs.getInt("sid");
String name = rs.getString("sname");
String sex = rs.getString("sex");
out.println("<td>"+id+"</td>");
out.println("<td>"+name+"</td>");
out.println("<td>"+sex+"</td>");
out.println("</tr>");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
out.println("</table></body></html>");
}
@Override
public void destroy() {
System.out.println("销毁方法");
}
}
一个简单jsp例子
自定义一个student对象
id,name,sex
new student对象 s1
pagecontext.setAttribute(“名字”,s1)
通过对象名$(pageScope.名字,)即可获取s1对象的值
package web;
public class Student {
private int id;
private String name;
public Student(int id, String name) {
this.id = id;
this.name = name;
}
public Student() {
}
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;
}
}
<%@ page import="web.Student" %>
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2018/9/9
Time: 14:07
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
java.util.Date d = new java.util.Date();
pageContext.setAttribute("date",d);
%>
${pageScope.date}
<hr>
<%
Student s1 = new Student(1,"kkk");
pageContext.setAttribute("student",s1);
%>
${pageScope.student.id}//基于get/set方法
${pageScope.student.name}
</body>
</html>
JSTL
java标准标签库 java standard tag library
导入标签库
<%@ taglib prefix="前缀" uri="标签库唯一标识" %>
<%@ taglib prefix="a" uri="http/" %>
<a:forEach items="要遍历的集合" var="临时变量">
${临时变量}
</a:forEach>
<a:forEach begin="1" end="10" var="i">
${i}
</a:forEach>