servlet编码

针对web项目

在web.xml中配置

<context-param>
      <param-name>encode</param-name>
      <param-value>utf-8</param-value>
  </context-param>

在servlet中调用

public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        String encode = this.getServletContext().getInitParameter("encode");
        resp.setContentType("text/html;charset="+encode);

        req.setCharacterEncoding(encode);
    }

resp应答编码可通过上面两行进行编码

req请求:编码需要先编写为iso-8859-1 在通过String(字节数组,编码格式) 转换

String username = req.getParameter("username");
        byte[] bt = username.getBytes("iso-8859-1");
        username = new String(bt,encode);

这样就不会出现乱码情况

在转换为需要的编码格式,因为编码get方式提交的信息参数 2K url?name=value 形式传输 (空格用+代替)  浏览器会自动缓存,如果不需要缓存,需要代码实现 

resp.setHeader("cache", "no-cache");应该是这样

post请求提交的参数信息是通过request body 大小不受限制

 

小插曲:好久没用自己电脑,创建项目发现MyEclipse提示信息,看了之后是因为jdk版本太高,修改jdk版本为myeclipse自带的就可以

Multiple markers at this line
    - The type java.io.ObjectInputStream cannot be resolved. It is indirectly referenced 
     from required .class files
    - The type java.io.ObjectInputStream cannot be resolved. It is indirectly referenced 
     from required .class files

 

实体Servlet是Java Servlet技术中的一个重要组成部分,用于处理HTTP请求并生成响应。它们主要用于服务器端的业务逻辑处理和数据处理。以下是实体Servlet编码的基本步骤和关键概念: 1. **继承父类**:通常,你需要创建一个类并继承自`javax.servlet.http.HttpServlet`或`javax.servlet.GenericServlet`。 ```java import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class MyServlet extends HttpServlet { // ... } ``` 2. **重写doGet/doPost方法**:这两个方法分别处理GET和POST请求。这些方法会接收到客户端发送的HTTP请求,并根据需要执行相应的业务逻辑。 ```java @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 处理GET请求 } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 处理POST请求 } ``` 3. **处理请求和响应**:使用HttpServletRequest对象获取请求参数,处理业务逻辑,然后用HttpServletResponse对象设置响应内容和状态码。 ```java String username = request.getParameter("username"); // 在doPost中,可能涉及数据库操作、业务验证等 // ... response.setContentType("text/html"); response.getWriter().println("<h1>Hello, " + username + "!</h1>"); ``` 4. **配置部署**:将你的Servlet添加到web.xml文件中,定义URL映射以及Servlet的初始化参数(如果需要)。 ```xml <servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>com.example.MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>/myServlet</url-pattern> </servlet-mapping> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值