一个最基本的JavaWeb项目需要什么:
1、网页
2、servlet
让一个类成为Servlet的方法
1、继承HttpServlet(需要导入Tomcat包)
如果找不到HttpServlet,那么检查是否添加了Tomcat服务
2、指定处理位置
3、重写service方法或者doGet和doPost方法
对于2项,有两种方法来实现:
1、直接写注释@WebServlet(“/地址”)
2、配置web.xml
配置详解:
<servlet>
<servlet-name>名字</servlet-name>
<servlet-class>自己写的servlet的全路径去掉.class</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>名字</servlet-name>
<url-pattern>地址</url-pattern>
</servlet-mapping>
如何在servlet里输出html代码:
PrinterWriter writer=response.getWriter();
writer.print(“html代码部分”);
jsp里嵌入java代码:
使用<% java代码片%>
<%= 参数值%>(此参数值一定要在上方有定义)
参数传递的两种方法:
get 通过url进行传递,传递的数据会暴露在url里
post 通过数据包进行传递,数据值不会显示在url上
所以呢,get是用来请求数据的,post是用来发送数据
接受jsp中传递的数据:
request.getParameter(“参数名”); (单个参数值)
request.getParameterValues(“”); (参数数组)
接受页面内所有的属性值
Map<String,String[]> map=request.getParameterMap();
Set<String> set=map.keySet();
for(String s:set){
for(String m:map.get(s)){
System.out.println(m);
}
}
解决中文乱码问题:
在Tomat8中,get做了优化,不会出现乱码。
但是这里写一下Tomcat8之前解决乱码的方法:
1、get乱码
①配置tomcat中的server.xml
②找到<Connector>
节点(配置端口号的那一行)
③然后添加URIEncoding=”UTF-8”即可
2、post乱码
只要在接受参数之前修改参数编码就可以
request.setCharacterEncoding(“UTF-8”);
这里涉及到了过滤器的配置
过滤器:
过滤器我现在知道的功能是:
1、解决乱码
2、判断权限
3、判断密码
通过过滤器解决乱码问题的配置:
1、实现Filter接口
导包要导javax.servlet.Filter;
public class filter implements Filter {
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
// TODO Auto-generated method stub
response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");
//这里将response和request都处理了
chain.doFilter(request, response);
//将处理之后的request和response继续传递
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
2、配置过滤地址
第一个方法:使用注释@WebFilter(“地址”) 代表通配,也可以使用.jsp等类似的
第二个方法:配置xml
<filter>
<filter-name>名字</filter-name>
<filter-class>自己写的filter的全路径去掉.class</filter-class>
</filter>
<filter-mapping>
<filter-name>名字</filter-name>
<url-pattern>地址</url-pattern>
</filter-mapping>
跳页的两种方式:
1、转发 只能在当前项目中进行跳页(不可跨域),找的是文件,发起一次请求(发起请求的次数是配合拦截器得出的),URL不变
查询使用转发
2、重定向 可以是任意页面(可跨域),找的是地址,发起两次请求,URL改变
增删改使用重定向,因为如果不使用重定向,造成的结果就是URL不变,当刷新页面的时候,会出现重复提交数据的问题
绝对路径和相对路径:
在项目中,一般使用绝对路径
在JavaWeb过程中,可以定义一个basePath来保存绝对路径
协议 request.getScheme();
主机 request.getServerName();
端口号 request.getServerPort();
工程名 request.getContextPath();
将上面几个组合起来,就是绝对路径,一般绝对路径是要定义到工程的根目录的
Ajax初步了解:
Ajax通常用于异步请求,相当于用Js脚本来调用后台代码
Ajax怎么调用?
$.ajax();
Ajax和form表单对比
——————From—————Ajax
提交地址——action—————url
提交方式——action—————type
提交参数——默认input框————json
返回值类型——不存在—————①第一种返回一个json—{参数名:参数值,参数名:参数值…}
——————————————②第二种返回—参数名=参数值&参数名=参数值…
回调函数——不存在—————function类型的
同步和异步—不存在—————当asunc为true的时候异步,为false的时候同步
Ajax本身无刷新
还有九大作用域,自己去网上查
JSTL初步认识:
JSTL的功能是搭配EL表达式实现Java代码,替代了在jsp中直接使用<%%>来书写java代码(jstl中也有很多函数,比如if,foreach…)
使用过程:
1、首先引入JSTL的包
2、将参数传到作用域内
3、通过${参数名}来取