• jsp笔记


    jsp

    • jsp声明
    • jsp注解
    • jsp表达式
    • jsp脚本
    <%@ page import="java.sql.DriverManager" %>
    <%@ page import="java.sql.Connection" %>
    <%@ page import="java.sql.Statement" %>
    <%@ page import="java.sql.ResultSet" %><%--
      Created by IntelliJ IDEA.
      User: Administrator
      Date: 2019/2/23
      Time: 上午 8:25
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
        <%--jsp的声明--%>
        <%! public int count;
    
            public String info() {
                return "hello java";
            }
        %>
    </head>
    <body>
    欢迎学习java web,现在的时间是:<%out.println(new java.util.Date());%>
    <br>
    <% for (int i = 0; i < 5; i++) {
        out.println("<font size='" + i + "'>java</font><br>");
    }%>
    <br>
    <h4>jsp的声明</h4>
    <%
        //每次刷新都会增加
        out.println(count++);
    %>
    <br>
    <%
        //输出info()方法的返回值
        out.println(info());
    %>
    <h4>输出jsp表达式,注意表达式的后面不能有分号</h4>
    <%=count++%>
    <%=info()%>
    
    <h4>java脚本</h4>
    <table border="1" width="300px">
        <%
            for (int i = 0; i < 5; i++) {
        %>
        <tr>
            <td>循环值:</td>
            <td><%=i%>
            </td>
        </tr>
        <%
            }
        %>
    </table>
    <h4>脚本中使用jdbc</h4>
    <%
    Class.forName("com.mysql.jdbc.Driver");
        Connection conn = DriverManager.getConnection("jdbc:mysql://192.168.225.128:33306/new_info","root","123456");
        Statement sm = conn.createStatement();
        ResultSet rs = sm.executeQuery("select * from t_info");
    %>
    <table border="1" width="300px">
        <tr>
            <td>id</td>
            <td>info</td>
        </tr>
        <%
            while (rs.next()){
        %>
        <tr>
            <td><%=rs.getString(1)%></td>
            <td><%=rs.getString(2)%></td>
        </tr>
        <%
            }
        %>
    </table>
    </body>
    </html>
    

    jsp的3个编译指令

    • page 只针对当前页面的指令
    • include 用于指定包含另一个页面
    • taglib 用于定义和访问自定义标签
      <%@ 编译指令名 属性名="属性值"%>

    page

    • import
      <%--类似于导入包--%>
      <%@page import="java.sql.*" %>
    • 错误信息
      <%@ page contentType="text/html;charset=UTF-8" language="java" errorPage="error.jsp" %>
      <%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
    • info
      <%@page info="this is a jsp" %>

    <%--输出info信息--%>
    <%=getServletInfo()%>

    include

    <%--静态文件的导入--%>
    <%@include file="error.jsp"%>
    <%--动态文件建议使用的方式--%>
    <jsp:include page="a.jsp"/>

    jsp的7个动作指令:

    • jsp:forward 页面转向,将请求的处理转发到下一个页面
    • jsp:param 传递参数
    • jsp.include 动态引入一个jsp
    • jsp.plugin 用于下载一个javabean或applet到客户端执行
    • jsp.useBean 创建一个javabean的实例
    • jsp.setProperty 设置javabean实例的属性值
    • jsp.getProperty 输出。。。。

    jsp:forward与jsp:param

    <jsp:forward page="res.jsp">
    <%--传递参数--%>
    <jsp:param name="age" value="29"/>
    </jsp:forward>

    jsp.include

    <jsp:include page="res.jsp">
    <%--传递参数--%>
    <jsp:param name="age" value="29"/>
    </jsp:include>

    <%--使用request内置对象获取age参数的值--%>
    <%=request.getParameter("user")%>

    其他

    <jsp:useBean id="p1" class="fly.pojo.Person" scope="page"/>
    <jsp:setProperty name="p1" property="name" value="zhangsan"/>
    <jsp:setProperty name="p1" property="age" value="20"/>
    <jsp:getProperty name="p1" property="name"/>
    <jsp:getProperty name="p1" property="age"/>

    <%
    Person p = new Person();
    pageContext.setAttribute("p2",p);
    p.setName("lisi");
    p.setAge(22);
    %>
    <%=p.getName()%>
    <%=p.getAge()%>
    <%=pageContext.getAttribute("p2")%>

    jsp脚本中的9个内置对象

    只能在jsp脚本,jsp输出表达式中使用

    • application 对整个web有效
    • config
    • exception
    • out
    • page 当前页面有效
    • pageContext
    • request 本次请求有效
    • response
    • session 一次会话有效

    application

    <body>
    <%! int i;%>
    <%
    application.setAttribute("count",String.valueOf(++i));
    %>
    <%=application.getAttribute("count")%>
    </body>
    

    java代码获取

    
    public class GetApplication extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            resp.setContentType("text/html;charset=utf-8");
            PrintWriter writer = resp.getWriter();
            writer.println("<html><head><title>");
            writer.println("</title></head><body>");
            ServletContext sc = getServletConfig().getServletContext();
            writer.println("application中当前的count值为:");
            writer.println(sc.getAttribute("count"));
            writer.println("</body></html>");
        }
    }
    

    web.xml部分设置:

        <servlet>
            <servlet-name>get-app</servlet-name>
            <servlet-class>fly.servlet.GetApplication</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>get-app</servlet-name>
            <url-pattern>/get-app</url-pattern>
        </servlet-mapping>
    

    pom文件:

    
    		<dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.1.0</version>
                <scope>provided</scope>
            </dependency>
    

    读取web.xml 配置参数:

    web.xml:

        <context-param>
            <param-name>driver</param-name>
            <param-value>com.mysql.jdbc.Driver</param-value>
        </context-param>
    

    jsp页面:

    <%--从配置中获取参数--%>
    <%
    String driver = application.getInitParameter("driver");
    out.println(driver);
    %>
    

    config对象:

    web.xml:

        <servlet>
            <servlet-name>servletName</servlet-name>
            <jsp-file>/e.jsp</jsp-file>
        </servlet>
        <servlet-mapping>
            <servlet-name>servletName</servlet-name>
            <url-pattern>/e.jsp</url-pattern>
        </servlet-mapping>
    

    e.jsp:

    <%--获取servlet的名字,默认为jsp--%>
    <%=config.getServletName()%>
    

    exception:

    <%=exception.getClass()%>
    <%=exception.getMessage()%>

    pom文件关于tomcat的配置说明

    	<build>
            <plugins>
                <plugin>
                    <!--启动命令-->
                    <!--clean tomcat7:run-->
                    <groupId>org.apache.tomcat.maven</groupId>
                    <artifactId>tomcat7-maven-plugin</artifactId>
                    <version>2.2</version>
                    <configuration>
                        <!--<port>9001</port>-->
                        <path>/</path>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    

    jdk 1.7设置:

    	<profiles>
            <profile>
                <id>jdk1.7</id>
                <activation>
                    <activeByDefault>true</activeByDefault>
                    <jdk>1.7</jdk>
                </activation>
                <properties>
                    <maven.compiler.source>1.7</maven.compiler.source>
                    <maven.compiler.target>1.7</maven.compiler.target>
                    <maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion>
                </properties>
            </profile>
        </profiles>
    

    filter过滤,访问log案例:

    
    import javax.servlet.*;
    import javax.servlet.annotation.WebFilter;
    import javax.servlet.http.HttpServletRequest;
    import java.io.IOException;
    
    /**
     * 过滤器,过滤所有
     */
    @WebFilter(filterName = "log", urlPatterns = {"/*"})
    public class MyFilter implements Filter {
        private FilterConfig config;
    
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
            this.config = filterConfig;
        }
    
        @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
            System.out.println("开始过滤...");
            long begin = System.currentTimeMillis();
            HttpServletRequest request1 = (HttpServletRequest) request;
            System.out.println("用户请求:" + request1.getServletPath());
            chain.doFilter(request, response);
            long end = System.currentTimeMillis();
            System.out.println("过滤结束...");
            System.out.println("前往:" + request1.getRequestURI());
            System.out.println("消耗时间:" + (end - begin));
    
    
        }
    
        @Override
        public void destroy() {
            this.config = null;
        }
    }
    

    listener 略

  • 相关阅读:
    .Net解析html文档类库HtmlAgilityPack完整使用说明
    C# 中使用JSON
    Property 'submit' of object #<HTMLFormElement> is not a function
    bin/...的访问被拒绝被拒绝的问题
    vs2012 ultimate 密钥
    ASP.NET-自定义HttpModule与HttpHandler
    jQuery同步Ajax带来的UI线程阻塞问题及解决办法
    Windows API
    服务器不安装Excel,实现导出Excel功能
    内存或磁盘空间不足,Microsoft Office Excel 无法再次打开或保存任何文档。 [问题点数:20分,结帖人wenyang2004]
  • 原文地址:https://www.cnblogs.com/fly-book/p/10422469.html
Copyright © 2020-2023  润新知