2018/7/6
一. servlet
servlet3.0+版本 有两种配置方式:
1.在java文件中加注解
2.在web.xml文件中加servlet和servlet-mapping标签
但是两种只能选其一
第1种方法比较简单,也是servlet3.0中新增加的方式
只需要在自定义的servlet类上方添加一行代码:@WebServlet("/NewTest")即可,并且,在创建servle时,eclipse可以自动在java文件中添加上
如下代码是一个完整的自定义servlet类:
package test;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class NewTest
*/
@WebServlet("/NewTest")
public class NewTest extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public NewTest() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//response.getWriter().append("Served at: ").append(request.getContextPath());
//response.getWriter().write("this is new Test");
String str = "";
try{
File index = new File("F:\\MyFiles\\myeclipseWorkspace\\LastTest\\WebRoot\\MyHtml.html");
BufferedReader br = new BufferedReader(new FileReader(index));
String line = null;
while((line=br.readLine())!=null)str+=line+"\n";
br.close();
str = str.replaceAll("LP_IMG_1", "img/catch.PNG");
response.getWriter().write(str);
}catch(Exception e){
response.getWriter().write("error: "+e.getMessage());
System.out.print(e.getStackTrace());
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
其中,这里重写了两个主要方法doPost 和doget,分别用于处理post和get请求
第二种,修改web.xml有的eclipse也可以自动配置,但是我的eclipse不可以,只需要在原来的web.xml文件里的<web-app>标签内加入以下代码:
<servlet>
<servlet-name>NewTest</servlet-name>
<servlet-class>test.NewTest</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>NewTest</servlet-name>
<url-pattern>/NewTest</url-pattern>
</servlet-mapping>
其中,在servlet标签中有servlet-name小标签,是servlet的名字,这个一般设为他的类名就好
servlet-class标签 就是写类名,这个类名要包含该类在src文件夹下的绝对路径,即包名和类名都要写上
配置好之后,完整的web.xml如下:其中蓝色是我添加的servlet配置信息
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>LastTest</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>NewTest</servlet-name>
<servlet-class>test.NewTest</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>NewTest</servlet-name>
<url-pattern>/NewTest</url-pattern>
</servlet-mapping>
</web-app>
最后,需要biuld工程,只有在webroot下的wen-inf里的classes文件夹下有了对应类的class文件才可以运行成功
但是,如果仅仅在项目是哪个右击->run as->myeclipse serverapplication , 有时他不会biuld工程
这是需要点击project->clean 选择要clean的工程
如果没有勾选automatically bilud ,还有biuld immediately 选项,可以勾选
clean并重建完就会发现web-inf/classes文件夹下出现newTest.class 这样说明servlet可以正常运行
如果还是没有,这上网搜一下为什么不能biuld工程,有一些方法可以选择,其中我死了几个,有的可以有的不可以
我使得可以的是右击项目->biuld path ->configure biuld path
将librayrs下的jre system library 移除然后在重新加载,这样再biuld工程就会成功
二,数据库关系模式
首先确定编码方式为utf-8
规则化编码可参考链接 : https://blog.csdn.net/ccsuzsky/article/details/6428876
需要确定编码的文件类型有:
1.静态html
文件开头head标记里:
<meta name="content-type" content="text/html; charset=UTF-8">
2.jsp
文件最开头<%@ page pageEncoding="utf-8"%>
3.database
新建database时设置
4.table
创建时设置,也可以用alter进行转化
5.java代码
编辑器选项设置里
6.servlet生成的动态网页
response.setContentType("text/html;charset=UTF-8");
7.servlet 获取get或post请求:
String name = (String)request.getParameter("name");
name = new String(name.getBytes("ISO-8859-1"), "UTF-8");
8.xml配置文件
文件第一行:<?xml version="1.0" encoding="UTF-8"?>
9.可能用到的其他文本文件
编辑器设置或选项,具体可以百度查找
经过一天的讨论,最终确定下来关系模式: