Servlet基础

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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值