您的位置:首页 > 编程语言 > Java开发

javaEE学习笔记

2016-07-03 11:31 330 查看
Init和destroy只被调用一次,service可被调用多次,属于不同的线程
  
获取配置文件中的参数:
ServletConfig  用于获取在xml文件中设置的常数值
法一:有参的初始化方法
Public void init(ServletConfig  config) throws ServletException{
Print(“init”);
System.out.println(“init-param:”+config.getInitParameter);
}
 
法二:无参的初始化方法
Public void init() throws ServletException{
Print(“init”);
String  test = getInitParameter(“test”);
System.out.println(“init-param:”+test);
}
 
 
事件能获取那些内容?
<listener>
 <listener-class>com.iotek.jee.listener.WebContextListener</listener-class>
</listener>
com.iotek.jee.listener包名
WebContextListener实现了ServletContextListener接口的类名
 

所有的Servlet都有,且只有一个
getServletContext()方法,Servlet的所有组件都可以访问它

可用于获取全局的变量

getServletContext()方法 写在
service方法中

 

 

getContextPath()获取的是 工程名

 

 

getQueryString()  用于get请求

获取请求页面后面的字符串参数name=admin&password=123456  

如:localhost:8080/WebServlet/index.jsp?name=admin&password=123456

 

 

在客户端可以用   ajax、表单、超链接  提交用户的数据请求信息

 

超链接  是小型的表单  是get提交方法

 

 

 

 

由客户端引起的错误  服务器发现客户请求的资源是不存在的

 

 

req.setCharacterEncoding(“UTF-8”):只适合post请求方式  避免客户端输入含有中文的超链接的参数值时
在服务器端出现乱码 对get请求方式无效

 

Get方式默认的字符编码为
ISO8859-1

 

表单默认是get请求

 

action指定由该表单有那个servlet处理

 

resp.getWriter().write(“name:”+name+”,age:”+age);在客户端的浏览器输出信息

 

  

代码提示:Alt+/

index.jsp的代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD
HTML 4.01 Transitional//EN">

<html>

  <head>

    <base href="<%=basePath%>">

    

    <title>My
JSP 'index.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">    

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="This
is my page">

<!--

<link
rel="stylesheet"
type="text/css"
href="styles.css">

-->

  </head>

  

  <body>

    <form method="post" action="prossesing">

    
姓名:<input name="name"/><br/><br/>

    
年龄:<input name="age"/><br/><br/>

    
上传:<input type="file" name="file"/><br/><br/>

    
<input type="reset" name="reset" value="取消"/><br/><br/>

    
<input type="submit" name="submit" value="提交"/><br/><br/>

    </form>

  </body>

</html>

 

 

Servlet类的代码如下:

package com.iotek.jee.servlet;

 

import java.io.IOException;

 

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

public class ProssesingServlet
extends HttpServlet {

 

private static final long serialVersionUID =
1L;

 

@Override

protected void doPost(HttpServletRequest
req, HttpServletResponse resp)

throws ServletException,
IOException {

req.setCharacterEncoding("UTF-8");
//解决中文乱码的步骤1

String name = req.getParameter("name");

String age = req.getParameter("age");

resp.setContentType("text/html;charset=UTF-8");
//解决中文乱码的步骤2

resp.getWriter().write("name:"+name+",age:"+age);

}

}

 

<form method="post" action="prossesing" enctype="multipart/form-data">

    
姓名:<input name="name"/><br/><br/>

    
年龄:<input name="age"/><br/><br/>

    
上传:<input type="file" name="file"/><br/><br/>

    
<input type="reset" name="reset" value="取消"/>

    
<input type="submit" name="submit" value="提交"/><br/><br/>

</form>

表单含有enctype="multipart/form-data"属性的
 需要在web.xml中配置如上图片的代码

 

Web.xml的代码如下:

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5" 

xmlns="http://java.sun.com/xml/ns/javaee" 

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name></display-name>

  <welcome-file-list>

    <welcome-file>index.jsp</welcome-file>

  </welcome-file-list>

 <listener>

 
<listener-class>com.iotek.jee.listener.WebContextListener</listener-class>

 </listener>

 <servlet>

 
<servlet-name>Prossesing</servlet-name>

 
<servlet-class>com.iotek.jee.servlet.ProssesingServlet</servlet-class>

 
<multipart-config>

 
<max-file-size>51200</max-file-size>

 
<max-requst-size>52224</max-requst-size>

 
<max-size-threshold>4096</max-size-threshold>

 
</multipart-config>

 </servlet>

 <servlet-mapping>

 
<servlet-name>Prossesing</servlet-name>

 
<url-pattern>/prossesing</url-pattern>

 </servlet-mapping>

</web-app>

 

获取表单中某个元素的文件名 的方法

 

 

forword方法:

假设有两个servlet
,分别是servlet1和servlet2,servlet1把请求对象和响应对象传递给servlet2,则servlet1中的响应输出流会无效

include方法:

 

  

状态码以3开头的,比如303,表示重定向

 

 

理解 请求转发与重定向 各自的工作流程 与 区别

 

 

WebContent下自定义的文件夹和文件 如:pages和index.html可以被用户访问,其他的如META-INF和WEB-INF目录则用户不能直接访问,WEB-INF只有servlet容器才可以访问

  

 

URL重写   需要再看一遍

 

过滤器的执行顺序   ->
在学习一遍  过滤器-2

 

 

作用域范围:Request < Session < Webcontext

内存消耗:Request < Session < Webconte

优先选择:1、Request  2、Session
 3、Webcontext

 

jsp页面编译后会生成.java文件和.class文件
  ,其中

Jsp页面中的小脚本和表达式是放在service方法中,所以小脚本和表达式只能声明变量不能声明方法。由于service方法是被所有线程共享的,所以在<%!
 %>中尽量只声明方法而不声明变量,因为如果声明了变量,那么这个变量就是全局的,当被多个线程同时访问时,会发生冲突

 

 

Jsp出现的原因:是避免使用servlet输出页面,即避免在servlet中还要使用标签对

 

使用指令去包含一个页面的时候,他们生成的是同一个Java源文件

  

当页面的动作指令设置了参数,则被包含页面就可以使用request对象的getParameter方法获取该页面的参数

  

要注意区别

 JSP脚本包括3中:声明、小脚本、表达式  在Java类中所在的位置

 

 

注意:

JSTL标准标签库   

EL表达式可以调用作用域对象的属性,但不能调用作用域对象的方法

 

获取用户通过表单或超链接传递的参数值 

 

<function-signature>是方法签名的意思

JSTL是页面上的小脚本转换成相应的标签库,有利于美工的工作

Remove默认是把所有作用域(page \request\session \application )的指定名称的对象都移除掉

表达式访问页面里定义的变量是比较方便的;

EL表达式访问定义在作用域对象里的变量是比较方便的。

 

 

 

<c:redirect .../>与<c:import .../>标签不能同时出现,会报错

 

 

在线书店
->采用MVC的目录结构

common存放我们写的一些工具

 

首页

 

图书信息

 

登录、注册

 

提交订单

 

订单管理

 

用户管理

 

在Tomcat页面配置数据源

 

访问Tomcat的网址http://tomcat.apache.org/

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java ee