首页 > 代码库 > JSP学习

JSP学习

1.项目格式:

IDEA中使用archetypeweb的构建就可以生成的,但是在Apple MAC上貌似不能用。IDEA中手动穿件标准的mvn项目,因为有web-app目录,IDEA会提示是否转成WEB项目选是。这里介绍一下WEB项目的目录结构

src/main/java: 放一些servlet之类的java文件

src/main/web-app/

         /jsp、/js、/img

         /WEB-INF/web.xml

这里的Web.xml是部署文件,指定一些servlet、listener之类的配置Servlet例子。访问http://domain/webroot/result.do的地址,get将访问servlet的GET方法。如果在Form 中 result.do的 POST时候将自动定位到POST方法。

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <servlet>
        <servlet-name>processServlet</servlet-name>
       <servlet-class>com.mvnbook.account.web.servlet.TestServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>processServlet</servlet-name>
        <url-pattern>/result.do</url-pattern>
    </servlet-mapping>
</web-app>

 2. 相对路径。 

<form url=‘result.do‘></form>

标签中url是submit之后的提交地址,相对于当前Html的路径。 如: 当前Html的路径是 web-app/html/test.html那么提交后的相对地址就是 http://domain/html/test.do 这种情况下去匹配Web.xm中的 servlet是匹配不上的, 因为上述url-pattern是相对于根的。 所以只能是 account-web/result.do这例 account-web是项目的根目录 

3. HttpServletRequest和HttpServletResponse对象

关于Request: request 对象的用于获取前端页面的参数 request.getParameter(‘size‘). 也可以获取多个参数request.getParameters(‘size‘)如复选框。

request还可以用来转发, HttpRequestDispature dispature = request.getRequestDispature(‘/jsp文件的路径‘); dispature.forward(requst,response);

关于response: Response 对象用来获取输出流的同时可以设置一些输出格式如 response.setContentType(‘img/jpeg‘); 同时还可以往输出流中塞一些非Html的内容。同时还可以往Response中添加一些header字段、cookie值、甚至Redirect到的其他地址(这里 redirect是返回302让客户端做跳转)

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       //设置输出格式
       resp.setContentType("image/jpeg");
      //获取输出流
        ServletOutputStream out = resp.getOutputStream();

// 读取资源文件
        ServletContext sc = getServletContext();
        InputStream is =  sc.getResourceAsStream("dowload.jpg");
// 向输出流中塞数据
        int read =0;
        byte[] result = new byte[1024];
        while ((read=is.read())!=-1){
            out.write(result,0,read);
        }
//输出
        out.flush();
        out.close();
    }

 

JSP学习